gin定时任务,2秒一次

package main

import (
	"fmt"
	"github.com/SimonWang00/goeureka"
	"github.com/gin-gonic/gin"
	"github.com/robfig/cron/v3"
	"log"
	"net/http"
	"time"
	"wbGo/task"
)

func main() {
	router := gin.Default()
	num := 0 // 运行次数
	// 设置时区
	local, _ := time.LoadLocation("Asia/Shanghai")
	interval := cron.New(cron.WithLocation(local), cron.WithSeconds()) // 设置时区并且精度按秒。
	timeout := "*/2 * * * * *"
	intervalId, err := interval.AddFunc(timeout, func() {
		num++
		log.Println("全局定时器已开启=num=", num)

	})
	if err != nil {
		log.Println("全局定时器报错", "\n error=", err, "\n num=", num)
		return
	}
	log.Println("全局定时器已开启,Id=", intervalId)
	interval.Start()

	router.Run("0.0.0.0:8000")
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是在 Gin Vue Admin 中创建定时任务的基本步骤: 1. 在后端(Gin)中定义定时任务的接口路由 ```go // 定义定时任务接口路由 router.POST("/api/v1/tasks", task.CreateTask) ``` 2. 在后端控制器中实现创建定时任务的逻辑 ```go func CreateTask(c *gin.Context) { // 从请求中获取定时任务的信息 var task models.Task if err := c.ShouldBindJSON(&task); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } // 写入数据库,创建定时任务 db.Create(&task) // 返回创建成功的信息 c.JSON(http.StatusOK, gin.H{"status": "success"}) } ``` 3. 在前端(Vue)中实现创建定时任务的界面和逻辑 ```vue <template> <div> <h2>Create Task</h2> <form @submit.prevent="createTask"> <div> <label for="name">Name:</label> <input type="text" id="name" v-model="task.name" required> </div> <div> <label for="cron">Cron:</label> <input type="text" id="cron" v-model="task.cron" required> </div> <div> <button type="submit">Create</button> </div> </form> </div> </template> <script> import axios from 'axios' export default { data() { return { task: { name: '', cron: '', }, } }, methods: { createTask() { axios.post('/api/v1/tasks', this.task) .then(response => { console.log(response.data) alert('Task created successfully') }) .catch(error => { console.log(error) alert('Failed to create task') }) }, }, } </script> ``` 4. 在前端(Vue)中实现定时任务列表的界面和逻辑 ```vue <template> <div> <h2>Task List</h2> <table> <thead> <tr> <th>Name</th> <th>Cron</th> <th>Actions</th> </tr> </thead> <tbody> <tr v-for="task in tasks" :key="task.id"> <td>{{ task.name }}</td> <td>{{ task.cron }}</td> <td> <button @click="runTask(task.id)">Run</button> <button @click="deleteTask(task.id)">Delete</button> </td> </tr> </tbody> </table> </div> </template> <script> import axios from 'axios' export default { data() { return { tasks: [], } }, mounted() { this.getTasks() }, methods: { getTasks() { axios.get('/api/v1/tasks') .then(response => { console.log(response.data) this.tasks = response.data }) .catch(error => { console.log(error) alert('Failed to get tasks') }) }, runTask(id) { axios.post(`/api/v1/tasks/${id}/run`) .then(response => { console.log(response.data) alert('Task executed successfully') }) .catch(error => { console.log(error) alert('Failed to execute task') }) }, deleteTask(id) { axios.delete(`/api/v1/tasks/${id}`) .then(response => { console.log(response.data) this.getTasks() }) .catch(error => { console.log(error) alert('Failed to delete task') }) }, }, } </script> ``` 5. 在后端控制器中实现获取定时任务列表、运行定时任务和删除定时任务的逻辑 ```go func GetTasks(c *gin.Context) { // 从数据库中获取所有的定时任务 var tasks []models.Task db.Find(&tasks) // 返回定时任务列表 c.JSON(http.StatusOK, tasks) } func RunTask(c *gin.Context) { // 获取定时任务的 ID id := c.Param("id") // 根据 ID 从数据库中获取定时任务 var task models.Task db.First(&task, id) // 执行定时任务 // ... // 返回执行成功的信息 c.JSON(http.StatusOK, gin.H{"status": "success"}) } func DeleteTask(c *gin.Context) { // 获取定时任务的 ID id := c.Param("id") // 根据 ID 从数据库中删除定时任务 db.Delete(&models.Task{}, id) // 返回删除成功的信息 c.JSON(http.StatusOK, gin.H{"status": "success"}) } ``` 注意:定时任务的具体实现需要根据业务逻辑进行编写,此处仅为示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值