python celery的使用
celery本文就不介绍了 感兴趣的看https://c.biancheng.net/view/s0j4eth.html 这个人家介绍的挺好的
1. 安装部署
Celery 涉及任务队列和结果存储, 我们使用 Redis,做例子前要先安装好redis。
我们可以通过命令行方式下载和安装指定版本:
# 安装Celery
pip install celery==5.2.3
# 因为后端采用的是Redis,所以需要安装Redis
pip install redis==4.2.0
# flower组件可以通过Web进行对Celery进行监控,但它不是必需的
pip install flower==1.0.0
#pip install eventlet
注:这个不装会报错 ValueError: not enough values to unpack (expected 3, got 0)
2、项目结构
3、celeryTask.py 源码
定义异步执行的方法
import celery import time backend = 'redis://127.0.0.1:6379/1' # 设置Redis的1数据库来存放结果 broker = 'redis://127.0.0.1:6379/2' # 设置Redis的2数据库来存放消息中间件 cel = celery.Celery('test', backend=backend, broker=broker) # 参数说明:第一个是Celery的名字,Celery和哪个项目相关就命名哪个 # 后面两个关键字参数用于指定消息中间件和结果存放位置。 @cel.task def send_email(name): print("向{}发送邮件...".format(name)) time.sleep(5) print("向{}发送邮件完成".format(name)) return "ok" @cel.task def send_msg(name): print("向{}发送短信...".format(name)) print("向{}发送短信完成".format(name)) return "ok"
4、启动celery
D:\pythonProject2023\CeleryProject> celery -A celeryTask worker -l INFO -P eventlet
说明:celery -A 定义实例的py文件名(不带.py) worker -l (日志的等级)
5、run.py源码
Celery的消费者
from celeryTask import send_email, send_msg result1 = send_email.delay("张三") print(result1.id) result2 = send_email.delay("李四") print(result2.id) result3 = send_email.delay("王五") print(result3.id) result4 = send_email.delay("赵六") print(result4.id)
6、执行run.py
查看celery的日志