You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用gocron实现Go程序每5分钟定时执行无输出如何解决

无法输出的原因
  • 你仅完成了定时任务的注册,没有启动gocron的调度器,注册的任务不会被触发执行
  • main函数在注册任务完成后会直接执行结束,整个程序进程退出,没有预留等待任务执行的运行时间
解决方案

在注册任务后调用gocron提供的StartBlocking()方法启动阻塞式调度,即可保持程序运行并按间隔执行任务,修改后的代码参考如下:

package main

import (
	"fmt"
	"github.com/go-co-op/gocron"
)

func hi() {
	fmt.Println("hi")
}

func main() {
	_, err := gocron.Every(5).Minute().Do(hi)
	if err != nil {
		// 可按需添加任务注册失败的处理逻辑
		panic(err)
	}
	// 启动阻塞调度,维持程序运行
	gocron.StartBlocking()
}

如果你需要在调度运行过程中加入自定义的退出控制逻辑,也可以选择非阻塞启动调度配合通道实现阻塞,示例如下:

func main() {
	_, err := gocron.Every(5).Minute().Do(hi)
	if err != nil {
		panic(err)
	}
	// 非阻塞启动调度
	gocron.Start()
	
	// 此处通过空select永久阻塞,你也可以监听syscall信号、自定义退出通道等实现可控退出
	select {}
}

内容的提问来源于stack exchange,提问作者Sathya Narayanan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:00:04