如题,现在做个功能想要实现即使服务端重启也能在重启完成后自动执行重启过程中漏掉的定时任务。
单纯的定时任务感觉好办,但是服务器端任务重启后自动执行漏掉的任务感觉不太好搞,Cargo 上面看了半天好像没啥成熟的定时任务包。
1
runtousa 2022-10-19 08:28:58 +08:00 via iPhone
楼主的需求其他语言的包能做到吗?
|
2
maotao456 2022-10-19 14:43:01 +08:00
楼主有点把包的职责范围想得太宽了。
|
3
billzhuang 2022-10-19 16:01:45 +08:00
意味着这个包要有持久层,整个逻辑想想还挺复杂的。
|
5
RTSmile OP @maotao456 然而 C#用 Hangfire 包不用配置就能直接这么用,想找这种功能的包肯定是看到有其他包实现了才找。
|
6
RTSmile OP @billzhuang 持久层感觉也不是太麻烦,目前的想法是用 Redis 做持久层,但是这样怎么判断哪些任务在重启期间没有被执行就比较麻烦了。
|
7
billzhuang 2022-10-19 16:35:42 +08:00
c# hangfire 有这么强大么?我记得之前有个 bug ,已经启动的 task 无法 cancel 。
|
8
RTSmile OP @billzhuang Hangfire 确实可以的,毕竟是有 Pro 版本收费的包。不过你说的这个 bug 我还没遇到过,回头我去试试看。
|
9
0Vincent0Zhang0 2022-10-23 15:27:58 +08:00
@RTSmile 关于“怎么判断哪些任务在重启期间没有被执行”,这个肯定要记录任务的执行日志,重启后根据执行日志进行判断。
|
10
Nugine0 2022-10-24 17:00:35 +08:00 via Android
实在没有的话,可以把别的语言的包移植过来用
|
11
sxfscool 2022-10-25 08:46:41 +08:00
需求也不复杂,在现有包上加个持久层就可以了吧
|
13
lanlanye 2022-11-02 09:32:54 +08:00
你需要额外一台不会重启的服务器定时记录需要执行的任务,是写日志还是推消息队列或者别的什么都可以,不然就启动时靠读取执行日志来计算之前有没有哪次漏掉了,反正定时任务肯定有个时间间隔吧……
|