Celery4定时任务不执行问题
文章目錄
在Celery定时任务里介绍,配置定时任务使用crontab, 并设置timezone。于是配置了timezone=”Asia/Shanghai”, 然而时间总是偏差8个小时,在Cannot use local time for cron schedules and UTC for solar schedules里找到解决的办法。原来问题的根源是Celery里的now函数定义出错了。查看now函数的实现
1 | def now(self): |
如果写成
1 | def now(self): |
就没问题了。
查看datetime.now的实现, 当tz不为空时, datetime.now(tz) 等于tz.fromutc(datetime.utcnow().replace(tzinfo=tz))。所以这是Celery的Bug
但是不能去修改Celery的源码,于是使用评论中提到的解决办法
1 | class MyCelery(Celery) |