Celery 及异步任务处理

Celery 及异步任务处理

- 模块组成

在这里插入图片描述

任务模块Task:包含了异步任务和定时任务,其中异步任务通常在业务逻辑中被触发并发往任务队列.而定时任务由Celery Beat进程周期性的将任务发往任务队列.
消息中间件Broker: Broker,是为任务调度队列,接受任务生产者发来的消息,将任务存入队列,Celery本身不提供队列服务,官方推荐使用RabbitMQ 和 Redis等.
任务执行单元Worker: Worker是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它
任务结果存储Backend: Backend用于存储任务的执行结果,以供查询,通消息中间件一样,存储也可能使用RabbitMQ,Redis和MongoDB

实现过程

1. 安装
pip install 'celery[redis]'
2.创建实例
import time from celery
import Celery
broker = 'redis://127.0.0.1:6379' 
backend = 'redis://127.0.0.1:6379/0' 
app = Celery('my_task', broker=broker, backend=backend)
@app.task 
def add(x, y):    
		time.sleep(5)   #模型耗时操作  
   		return x + y

3.启动Worker
celery worker -A tasks --loglevel=info
4 . 调用任务
from tasks import add
add.delay(2,8)
5. 常规配置
broker_url = 'redis://127.0.0.1:6379/0' 
broker_pool_limit = 1000  # Borker 连接池,默认是10
timezone = 'Asia/Shanghai' 
accept_content = ['pickle', 'json']
task_serializer = 'pickle' result_expires = 3600  # 任务过期时间
result_backend = 'redis://127.0.0.1:6379/0' 
result_serializer = 'pickle' 
result_cache_max = 10000  # 任务结果最大缓存数量
worker_redirect_stdouts_level = 'INFO'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值