部署django-celery
安装包
# pip安装必选
Django==3.2
celery==5.0.5
redis==3.5.3
# 可选,windows下运行celery 4以后版本,还需额外安装eventlet库
eventlet
# 推荐安装, 需要设置定时或周期任务时安装,推荐安装
django-celery-beat==2.2.0
# 视情况需要,需要存储任务结果时安装,视情况需要
django-celery-results==2.0.1
# 视情况需要,需要监控celery运行任务状态时安装
flower==0.9.7
测试Celery是否工作正常:
# Linux下测试,启动Celery
Celery -A djangoCelery worker -l info
# Windows下测试,启动Celery
Celery -A djangoCelery worker -l info -P eventlet
# 如果Windows下Celery不工作,输入如下命令
Celery -A djangoCelery worker -l info --pool=solo
异步调用任务
Celery提供了2种以异步方式调用任务的方法,delay和apply_async方法,如下所示:
# 方法一:delay方法
task_name.delay(args1, args2, kwargs=value_1, kwargs2=value_2)
# 方法二:apply_async方法,与delay类似,但支持更多参数
task.apply_async(args=[arg1, arg2], kwargs={key:value, key:value})
启动任务调度器beat
多开几个终端,一个用来启动任务调度器beat,另一个启动celery worker,你的任务就可以在后台执行啦。
# 开启任务调度器
Celery -A djangoCelery beat
# Linux下开启Celery worker
Celery -A djangoCelery worker -l info
# windows下开启Celery worker
Celery -A djangoCelery worker -l info -P eventlet
# windows下如果报Pid错误
Celery -A djangoCelery worker -l info --pool=solo
Flower监控任务执行状态
除了django_celery_results, 你可以使用flower监控后台任务执行状态。它提供了一个可视化的界面,在测试环境中非常有用。
pip install flower
# 从terminal终端启动, proj为项目名
$ flower -A djangoCelery --port=5555
# 从celery启动
$ celery flower -A djangoCelery --address=127.0.0.1 --port=5555