celcery是一个任务分发系统,总体我的感觉就是通过将需要执行的任务交给celery,在celery内进行任务的执行,celery需要消息中间价存放你的任务,这时可以用redis或者rabbitmq作为消息中间件,用来存消息和读消息。
1、celcey简介
celery是一个简单、灵活可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需的工具。专注于实时处理的任务队列,同时也支持任务调度。
2、celery简单实例
对于一个简单的实例,我们将任务创建、管理职程放在一个模块中。
拿个简答例子,我们需要批量计算a+b,那么我们的任务调度代码如下:
首先我们创建tasks.py
from celery import Celery
app = Celery('tasks',broker='amqp://guest@localhost//')
@app.task
def add(x,y):
return x+y
运行Celery实例:
celery -A tasks worker –loglevel=info
调用任务
可以用delay()方法来调用任务
这是apply_async()方法的快捷方式,允许你更好地控制任务执行
from tasks import add
add.delay(4,4)
result.ready()
print result.get(timeout=1, propagate=False)
3、执行任务
查看rabbitmq-server的运行情况:
localhost:15672
guest/guest