代码拉取完成,页面将自动刷新
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"github.com/robfig/cron"
)
type Configuration struct {
Url string `json:"url"`
IsShowLog bool `json:"show_log"`
Cron string `json:"cron"`
Port string `json:"port"`
}
func sayHello(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "自身服务返回")
}
func main() {
conf := Configuration{"http://127.0.0.1:8092/timetask", true, "0 */1 * * * ?", ":8092"}
isExit, err := PathExists("config.json")
if err != nil || isExit == false {
data, _ := json.Marshal(conf)
ioutil.WriteFile("config.json", data, os.ModeAppend)
}
data, err := ioutil.ReadFile("config.json")
if len(data) < 10 {
data, _ := json.Marshal(conf)
ioutil.WriteFile("config.json", data, os.ModeAppend)
} else {
err = json.Unmarshal(data, &conf)
d, _ := json.Marshal(conf)
log.Printf("载入配置:%s\n", string(d[:]))
}
c := cron.New()
c.AddFunc(conf.Cron, func() {
if conf.IsShowLog {
log.Print("执行定时任务:\n")
}
resp, err := http.Get(conf.Url)
if err != nil {
log.Fatalf("请求失败:%s", conf.Url)
}
if conf.IsShowLog {
result, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
fmt.Println(" - " + string(result[:]))
}
})
c.Start()
http.HandleFunc("/timetask", sayHello)
err = http.ListenAndServe(conf.Port, nil)
if err != nil {
log.Fatal("ListenAndServe:", err)
}
}
func PathExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。