celery
是4.0及以上版本请确保python
的redis
库版本在2.10.4及以上,否则会出现redis
连接timeout
的错误
相关:
Celery-详解
Celery+Redis实现异步任务(1)
Celery+Redis实现异步任务(2)
Celery+Redis实现异步任务(3)
安装
pip insatll celery # 安装celery
pip install celery[redis] # 安装链接redis的驱动
sudo apt-get install redis-server # 安装redis服务
安装完成后redis
服务会自动启动,检查redis
进程: ps -ef | grep redis
通过启动命令检查redis服务启动状态: sudo /etc/init.d/redis-server status
通过客户端访问redis
:redis-cli
使用Celery
- 初始化一个app实例
创建task.py
import time
from celery import Celery
app = Celery('celery_test', broker='redis://localhost:6379/1', backend='redis://localhost:6379/2')
@app.task
def hello(name):
print("hello world >>> {}".format(name))
return "hello world >>>{}".format(name)
创建hello.py
from task import hello
if __name__ == "__main__":
hello.delay('xxx')
执行命令启动 Celery
celery worker -A task -l INFO
生成任务
python hello.py
代码说明:
初始化app
实例
app = Celery(celery_name, broker, backend)
broker
:消息中间件
broker = 'redis://loaclhost:6379/1'
backend
:结果的存储
backend = 'redis://loaclhost:6379/2'
启动broker
:
celery worker -A task -l INFO
# -A 参数表示 Celery APP的名称
# -l 参数表示日志级别
# 追加启动参数 -c 10,设定并发限制数为 10
注意:
- 调用的时候用
delay
获取apply_async
方式调用,而不是直接调用。delay
是apply_async
的快捷方式,二者作用相同,只是apply_async
可以进行更多的任务属性设置,比如callbacks/errbacks
正常回调与错误回调,执行超时,重试,重试时间等。 - 两个不同的
worker
监听共享缓冲区的同一个队列会出错,得指定队列。
3.可以通过redis-cli
客户端查看backend
存储的结果,结果储存的失效时间默认24小时。
网友评论