Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。
在构建计算为主的服务中,使用Celery可以方便地处理计划任务、并发任务调度、分布式计算等问题。
安装
1、安装celery
pip install celery
2、安装一个消息队列服务
可选RabbitMQ、Redis等(更多)。
3、(可选)安装一个Pool模式工具库
Celery的Pool默认使用内置的prefork,但在windows10上运行有问题。推荐安装第三方的gevent或eventlet。
pip install gevent
工作方式
一个最小模型需要两个同目录文件:
tasks.py - 供Celery调用的工作职程。
index.py - 需要调用任务的外部服务。
# tasks.py
from celery import Celery
# 使用redis做消息队列
# 如果只调用任务,不需要返回结果,则backend置空
app = Celery('tasks', broker='redis://localhost:6379/9', backend='redis://localhost:6379/9')
# 定义一个计算任务
@app.task
def add(x, y):
return x + y
# index.py
from tasks import add
result = add.delay(4, 4)
# 工作id
print(result)
# 工作状态
print(result.ready())
# 工作结果
print(result.get(timeout=1))
- 启动时,在目录下执行:
celery -A tasks worker --loglevel=info -P gevent
即可调用tasks.py启动工作职程。
- 然后用python执行index.py,可以看到打印出计算结果8。
网友评论