celery使用
2019-05-30 16:51
741 查看
celery使用
-
使用方式
1.1 celery实例定义,task定义 - moduleA.py
from celery import Celery app1 = Celery("app1",broker='ampq://username1:passwd1@host1:5672/') app2 = Celery("app2",broker='amqp://username2:passwd2@host2:5672/') @app1.task #func1在app1对应的worker进程中执行 def func1(): return "helloworld" @app2.task #func2在app2对应的worker进程中执行 def func2(a,b): return a+b
1.2 shell中 启动 worker 进程
#启动app1对应的worker进程(只处理由@app1.task定义的task),启动的进程数和CPU核数相关 celery -A moduleA:app1 worker -l INFO #启动app2对应的worker进程(只处理由@app2.task定义的task),启动的进程数和CPU核数相关 celery -A moduleA:app2 worker -l INFO
1.3 web服务器端task调用
result1 = moduleA.func1.delay() #通过result1可以查看func1的执行状态是否完成及完成后的结果 result2 = moduleA.func2.delay(1,2) #通过result2可以查看func2的执行状态是否完成及完成后的结果
- 使用场景
给web服务器端添加后台处理能力。web服务器端需要一些耗时的处理又不想让web客户端等待任务完成,web服务器可以给web客户端一个临时响应(例如任务已创建),web服务器端同时进行任务处理,在任务进行中或者完成后web客户端可以重新连接到web服务器查看任务的状态及是否完成。 -
celery的组成
为了完成2中需求功能,celery需要哪些?
3.1 task定义
web服务器端需要完成的一些耗时操作定义为task(以@celery实例.task申明)3.2 worker启动
task的执行在worker进程中进行,web服务器端只处理web客户端请求的接收及应答,worker进程 启动见1.23.3 broker(代理或者中间人)-rabbitmq
负责web服务器进程woker进程之间交流沟通,消息存储等。
相关文章推荐
- Celery(二)-----------------使用Celery的第二步
- tornado使用celery实现异步处理
- Django中使用Celery的教程详解
- windows使用celery遇到的错误
- flask celery 使用方法
- Django使用Celery异步任务队列
- Django中使用Celery的方法示例
- 使用celery时要注意的任务调用形式
- Celery(一)---------使用Celery的第一步
- python celery 使用及后台运行(supervisor)
- tornado中使用celery实现异步MySQL操作
- 消息列队 分布式事务解办法 celery flower使用总结
- 深入Celery之使用队列以及优先级提高响应
- 小计使用多线程和gevent来提高celery性能及稳定性 推荐
- Django中如何使用django-celery完成异步任务
- 使用django+celery+RabbitMQ实现异步执行
- celery使用
- celery后台运行-使用init-script的方法
- Django框架中使用Celery异步发送邮件
- 异步任务队列Celery在Django中的使用