部署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

参考文章-Django进阶:万字长文教你使用Celery执行异步和周期性任务(多图)

项目源码:https://github.com/Mzihao/djangoCelery

posted @ 2022-04-24 15:33  南瓜头pumpkin  阅读(28)  评论(0)    收藏  举报