Skip to main content

celery的安装和基本使用

本文介绍了如何安装和基本使用celery,一个Python的分布式任务队列。

安装celery

首先使用pip命令安装celery和它的相关依赖:

pip install "celery[redis,auth,msgpack]"

如下图所示。

图84-安装celery和依赖

创建任务

在项目目录dx_movie下创建一个名为celery的文件夹,在该文件夹下创建一个Python文件tasks.py。在tasks.py文件中导入celery并创建一个应用:

dx_movie/celery/tasks.py
from celery import Celery

app = Celery('tasks', backend='redis://127.0.0.1', broker='redis://127.0.0.1')

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

如下图所示。

图84-创建task

启动redis

tasks.py中指定了backend使用redis, 所以,我们需要先来启动redis。启动命令参照上一节。

图84-启动task

启动celery worker

接下里,使用命令启动Celery的工作进程(worker):

(venv) andy@andy celery % celery -A tasks worker -l INFO 
参数说明

这个命令是用来启动Celery的工作进程(worker)的,它包含几个关键部分,解释如下:

  • celery: 这是启动Celery命令行工具的命令。
  • -A tasks: -A--app 参数指定Celery应用的名称。在这个例子中,tasks表示Celery应用的模块或包名。这意味着Celery将会在tasks模块或包中寻找配置,包括任务等。
  • worker: 这个参数告诉Celery要启动工作进程。工作进程负责执行异步任务。
  • -l INFO: -l--loglevel 参数用来设置日志级别。INFO级别意味着工作进程会记录信息级别的日志,这包括任务执行的信息,如任务接收、任务执行结果等。

综上所述,命令celery -A tasks worker -l INFO的含义是:启动Celery,使用tasks模块或包作为Celery应用来配置工作环境,启动工作进程,并设置日志级别为信息级别,以便于监控任务的执行情况。

运行结果如下所示。

图84-启动task

调用任务

celery文件夹下创建一个名为run_tasks.py的Python文件,编写以下代码来调用celery任务:

dx_movie/celery/run_tasks.py
from tasks import add

result = add.delay(4,4)
print(f'Is task ready: {result.ready()}')

run_result = result.get(timeout=5)
print(f'task result: {run_result}')

运行结果如下图所示。

图83-执行任务

以上就是使用celery的基本步骤。通过创建任务、启动celery worker,并调用任务来执行,在然后获取结果。