定时任务计时规则想从数据库获取,获取成功按该规则重新执行定时任务,能否实现
Q
[eggjs/egg]定时任务规则如何不重启服务重新生效
0
A
回答
7
可以一直生效,然后在定时任务里判断条件,在不需要执行时直接 return 即可
8
那是一个推送任务是基本一天定时执行一遍,如果一直轮询不会很耗费内存吗?
0
你把定时任务设成 1 天执行一遍,在定时任务的执行实体里判断是否要执行,不需执行就 return
1
推送任务是在一天的某个时间点进行推送,一天执行一遍的定时任务,这个定时任务执行的时候好像判断不了当前时间是否和推送时间相等吧
2
你的意思是说在每天的某个时间点执行若干次任务?那写一个定时任务在这个时间点启动,任务实体用 setTimeout 或者别的手段来执行是不是就可以了?
9
我在定时任务设置了cron: app.cron, app.cron一直保存在内存里面,当更改规则的接口传来时,这个值就变了,但是定时任务规则好像只有重启服务器才生效,就是这个cron不能动态更改
5
https://github.com/eggjs/egg-schedule/#schedule-type
自行定义一个 ScheduleStrategy
7
其实还有一个解决方案,就是去为 egg-schedule 提 PR 贡献这个运行时改变 disable 能力?
4
https://github.com/eggjs/egg-schedule/blob/2c64d3c6dd386dedaa784180ebb6c61b89fd1d53/lib/schedule.js#L48
其实就是加个方法 agent.schedule.enableJob(key) / agent.schedule.disableJob(key)
但这个只是单机的。