本文主要是介绍笔记-python之celery使用详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Celery是一个用于处理异步任务的Python库,它允许你将任务分发到多个worker进行处理。以下是Celery的使用详解:
- 安装Celery
使用pip安装Celery:
pip install celery
- 创建Celery实例
首先,需要创建一个Celery实例,指定broker(消息中间件)和backend(结果存储)。
from celery import Celeryapp = Celery('tasks', broker='pyamqp://guest@localhost//', backend='rpc://')
- 定义任务
在模块中定义一个任务,使用@app.task
装饰器将其标记为Celery任务。
@app.task
def add(x, y):return x + y
- 调用任务
可以使用apply_async
或delay
方法调用任务。
# 使用apply_async调用任务
add.apply_async(args=(1, 2), queue='default')# 使用delay调用任务
result = add.delay(1, 2)
- 运行worker
在命令行中运行以下命令启动worker:
celery -A your_module worker --loglevel=info
- 查看任务状态
可以使用AsyncResult
对象查看任务的状态。
result = add.delay(1, 2)
print(result.ready()) # 检查任务是否完成
print(result.get()) # 获取任务结果
- 配置多个worker和队列
可以在Celery实例中配置多个worker和队列。
app = Celery('tasks', broker='pyamqp://guest@localhost//', backend='rpc://')
app.conf.update(worker_directories=['path/to/worker1', 'path/to/worker2'],task_queues=[Queue('default', Exchange('default'), routing_key='default'),Queue('high-priority', Exchange('high-priority'), routing_key='high-priority'),],task_default_queue='default',task_default_exchange='default',task_default_routing_key='default',
)
- 优先级和路由
可以为任务设置优先级和路由键,以便将任务发送到不同的队列。
add.apply_async(args=(1, 2), priority=2, queue='high-priority', routing_key='high-priority')
- 结果后端
可以使用结果后端存储任务的结果。支持多种后端,如Redis、数据库等。
app = Celery('tasks', broker='pyamqp://guest@localhost//', backend='redis://localhost:6379/0')
- 自定义序列化和压缩
可以自定义序列化和压缩方法,以便在broker和worker之间传输数据。
app.conf.update(accept_content=['json'],result_serializer='json',task_serializer='json',compression='gzip',
)
这篇关于笔记-python之celery使用详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!