1 Star 0 Fork 0

程序员锡哥/Get定时请求

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main.go 1.57 KB
一键复制 编辑 原始数据 按行查看 历史
程序员锡哥 提交于 2018-02-03 16:52 . fitst commit
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
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/msgy/GetDingShiQingQiu.git
git@gitee.com:msgy/GetDingShiQingQiu.git
msgy
GetDingShiQingQiu
Get定时请求
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385