【Python使用】Python之Celery笔记讲解第2篇:2.Redis,1.创建应用

举报
程序员一诺python 发表于 2025/07/27 15:05:03 2025/07/27
【摘要】 1. 问题抛出 celery介绍 1.RabbitMQ 2.Redis 1.创建应用 2.调用任务 3.存储结果 1.直接通过app来配置 2.专有配置文件 1. signature 指定任务发到那个队列中 配置周期性任务, 或者定时任务 周期执行任务 为celery设置环境变量 配置应用 设置app自动加载任务 从已经安装的app中查找任务 加上app对象的task装饰器 此

2.Redis

Redis也是一款功能完备的broker可选项,但是其更可能因意外中断或者电源故障导致数据丢失的情况。 关于是有那个Redis作为Broker,可访下面网址: [

1.创建应用

我们首先创建tasks.py模块, 其内容为:

from celery import Celery



# 我们这里案例使用redis作为broker


app = Celery('demo', broker='redis://:332572@127.0.0.1/1')



# 创建任务函数


@app.task
def my_task():
    print("任务函数正在执行....")

Celery第一个参数是给其设定一个名字, 第二参数我们设定一个中间人broker, 在这里我们使用Redis作为中间人。my_task函数是我们编写的一个任务函数, 通过加上装饰器app.task, 将其注册到broker的队列中。

现在我们在创建一个worker, 等待处理队列中的任务

2.调用任务

任务加入到broker队列中,以便刚才我们创建的celery workder服务器能够从队列中取出任务并执行。如何将任务函数加入到队列中,可使用delay()。

进入python终端, 执行如下代码:

from tasks import my_task
my_task.delay()

执行效果如下: 我们通过worker的控制台,可以看到我们的任务被worker处理。调用一个任务函数,将会返回一个AsyncResult对象,这个对象可以用来检查任务的状态或者获得任务的返回值。

3.存储结果

如果我们想跟踪任务的状态,Celery需要将结果保存到某个地方。有几种保存的方案可选:SQLAlchemy、Django ORM、Memcached、 Redis、RPC (RabbitMQ/AMQP)。

例子我们仍然使用Redis作为存储结果的方案,任务结果存储配置我们通过Celery的backend参数来设定。我们将tasks模块修改如下: ```python from celery import Celery

我们这里案例使用redis作为broker

app = Celery('demo', backend='redis://:332572@127.0.0.1:6379/2', broker='redis://:332572@127.0.0.1:6379/1')

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。