背景
前期使用Flask + Celery + Redis
搭建了一个后台定时任务,由于服务器是windows环境,在部署后,启动celery beat
出现了如下的报错:
1 | E:\Python\WorkSpace\hzinfo>celery worker -A manage.celery -B --loglevel=info |
解决办法
既然提示说需要单独运行celery beat
,那么还是分步进行:
启动celery:
1
start /b celery worker -A manage.celery --loglevel=info -c 1 -f "celery_app/celery.log"
启动celery beat:
1
celery -A manage.celery beat -s "celery_app/celerybeat-schedule"
启动flask:
1
python manage.py runserver
在程序中,配置的是晚上18点35分执行任务,执行情况如下:
在
celery beat
窗口:1
[2019-05-29 18:35:00,006: INFO/MainProcess] Scheduler: Sending due task fw_pool_src_sync (app.firewall.fwPoolSync.src_sync)
在
celery
主程序中指定为log文件中:1
2
3[2019-05-29 18:35:00,006: INFO/MainProcess] Received task: app.firewall.fwPoolSync.src_sync[f7e89a84-caaa-42dd-a799-d939fb5d95b4]
[2019-05-29 18:35:23,858: INFO/Worker-1] start
[2019-05-29 18:35:23,904: INFO/MainProcess] Task app.firewall.fwPoolSync.src_sync[f7e89a84-caaa-42dd-a799-d939fb5d95b4] succeeded in 23.8989999294s: success!
扩展
果然部署服务器还是Linux比较好,windows就比较麻烦。看了下celery
官网,并没有针对不同的操作系统进行区分。
更多可参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#starting-the-scheduler