使用celery做定时任务时,出现一个错误,就是不执行定时任务。刚开始在在做测试时是每分钟测试,然后我发现并没有执行这个服务。于是在花费了定量时间,然后解决了这个bug。
celery定时任务bug
就是简单做celery定时任务时,我发现逻辑和代码并没有任何问题,但是就是不启动。
于是进行百度,刚开始说的是可能是celery版本的问题,但是发现并不是这个问题。
经过测试,我把crontab中的参数hour去掉,把minute设置每分钟,于是我发现每分钟都会执行。
所以可以确定是hour,也就是时区问题。但是机器上的时间和代码里面的时区都没有问题,那可能是celery本身的问题了。
原因
默认celery的时区为UTC
解决思路
将celery定时任务设置为根据本地时区触发
默认celery的时区为UTC,如果要在django项目中将celery定时任务配置为根据本地时区触发,则需要修改
在settings.py中添加以下代码
1 | CELERY_TIMEZONE='Asia/Shanghai' |
1 | #定时任务 |