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

75 阅读1分钟

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模块修改如下:

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')