celery 简单使用
admin
2023-01-29 05:00:05
0

一、简介
celery是异步任务队列框架,支持实时处理消息任务,和定时处理消息任务.
架构图:
celery 简单使用

组件说明:
producer: 调用celery api,函数,装饰器,生成task,放入消息队列的都是生产者
celery beat: 任务调度器,beat进程读取配置文件,周期性的将配置文件中需要执行的任务放入队列
broker: 消息代理中间件,task任务存入队列,供worker取出执行
worker: 执行任务的消费者,可以开启多个线程执行
backend: 任务处理完后保存状态信息和结果,以供查询

二、简单使用
项目结构
celery 简单使用

app_test.py实例化celery
from celery import Celery
app = Celery('celerydemo',include=['celerydemo.tasks'])
app.config_from_object('celerydemo.celeryconfig')

if name == 'main':
app.start()

创建任务tasks.py
import time
from celerydemo.app_test import app

@app.task
def add(x,y):
time.sleep(1)
return x+y

添加配置文件celeryconfig.py
BROKER_URL = 'redis://:123456@127.0.0.1:6379/0'

CELERY_RESULT_BACKEND = 'redis://:123456@127.0.0.1:6379/0'
CELERY_TASK_SERIALIZER = 'msgpack'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_RESULT_EXPIRES = 60 60 24
CELERY_ACCEPT_CONTENT = ['json', 'msgpack']

创建worker消费者线程
celery -A celerydemo.app_test worker -l info

调用任务exec.py 放入队列,并输出结果
from celerydemo.tasks import add
import time
t1 = time.time()

#调用delay将任务插入broker队列
r1 = add.delay(1,2)
r2 = add.delay(2,2)
r3 = add.delay(3,2)
r4 = add.delay(4,2)
r5 = add.delay(5,2)

r_list = [r1,r2,r3,r4,r5]

for r in r_list:
while not r.ready():
pass
print(r.result)

t2 = time.time()

print('共耗时: %s' % str(t2-t1))

相关内容

热门资讯

魅族StarV Snap AI... 2025年的智能穿戴设备市场非常的内卷,特别是智能眼镜这方面更是全面开花。那么有没有一款能够可穿戴一...
重磅消息“八闽福建麻将.究竟有... 重磅消息“八闽福建麻将.究竟有挂吗?”必胜开挂神器您好,八闽福建麻将这个游戏其实有挂的,确实是有挂的...
今日重大消息“德扑之星.开挂神... 家人们!今天小编来为大家解答德扑之星透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
今日重磅消息“一言棋牌.可以开... 您好:一言棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
终于懂了“八闽福建麻将.开挂器... 家人们!今天小编来为大家解答八闽福建麻将透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
最新引进“战神牛牛.究竟有挂吗... 您好:战神牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
玩家分享攻略“同城游跑胡子.到... 玩家分享攻略“同城游跑胡子.到底有挂吗?”其实是有挂您好,同城游跑胡子这个游戏其实有挂的,确实是有挂...
玩家攻略科普“传送屋.怎么开挂... 有 亲,根据资深记者爆料传送屋是可以开挂的,确实有挂(咨询软件无需打开直...
我来教教您“非凡卡五星.究竟有... 网上科普关于“非凡卡五星有没有挂”话题很是火热,小编也是针对非凡卡五星作*弊开挂的方法以及开挂对应的...
今日重大发现“新版wepoke... 您好:新版wepoker这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家...