之前用过 APScheduler,可以定时执行任务,但是时间都是需要先设置好,比如使用crontab
的方式,这几天了解了一下 celery,发现跟 APScheduler 比较类似,也是需要先设置好时间。
现在有个场景,比如我新建了一个待办事项,时间点为 2020-12-22 11:30 分,我需要在 2020-12-22 11:20 分自动发送邮件通知我,这样的需求怎么实现呢?
我现在想到了两个方法
但是感觉这两种方法非常的蠢,有没有大哥给点建议~
1
awanabe 2020-12-21 15:32:57 +08:00
定时任务本质上就是周期扫描数据库
一般都是 1 方案 还有一种方案..你为你这个待办事项提醒单独创建一个 task 每次不用扫描大表, 只要扫描 task 表就可以获取代办任务 |
2
lpts007 2020-12-21 15:36:23 +08:00
1, 2 都行 2 的话需要注意长延时场景下重复执行的问题
|
3
zachlhb 2020-12-21 15:37:00 +08:00 via Android
celery 的任务可以按时间点执行的,创建不同类型的调度器就行了,clocked 调度器就是在某一个时间点执行
|
7
maocat 2020-12-21 15:44:01 +08:00
celery 延时已经够用了,而且 celery 是支持分布式的,不怕你任务量大
|