文章目录
一、celery跑起来!
组件安装
主角 : celery
配角 : redis 或者 rabbitmq
linux:
pip install reids celery
windows
pip install redis eventlet
注意 :
windows上使用celery,bug很多,慎用!
启动celery时,记得后面加上 -P eventlet
比如 : celery worker -A app1 -c 16 -P eventlet
架构图:如下所示
-
user 就是用户的控制代码。(比如下面你的app.py)
-
borker 是中间件,可以使用 redis 或者 rabbitmq.
-
workers 就是 执行具体任务的代码。 (比如下面的 tasks.py)
-
backend 是结果存储的地方, 支持很多存储方式,常见的是 支持sqlalchemy的数据库、redis等。
使用步骤
1 配置broker 和 backend
broker只支持 redis, rabbitmq。
broker = 'redis://localhost:6379/1'
backend 可以使用很多,比如支持sqlalchemy的数据库,redis也行。
backend = 'redis://localhost:6379/2'
result_backend = 'db+sqlite:///results.sqlite'
result_backend = 'db+mysql://scott:tiger@localhost/foo'
result_backend = 'db+postgresql://scott:tiger@localhost/mydatabase'
result_backend = 'db+oracle://scott:tiger@127.0.0.1:1521/sidname'
2 编写worker代码
tasks.py
import time
from celery import Celery
database = 'redis'
ip = '192.168.92.128'
port = '6379'
uri = f"{database}://{ip}:{port}/" + '{}'
# redis 2号 数据库是 接受任务队列
broker = uri.format(2)
# redis 3号 数据库是 存储执行结果队列
backend = uri.format(3)
app = Celery('my_task', broker=broker, backend=backend)
@app.task
def add