python celery的使用

发布时间 2023-12-18 16:32:54作者: 万笑佛

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的日志