celery是一个简单、灵活和可靠的分布式任务处理系统。专注实时任务队列,也支持任务调度。
一、celery主要包括四个部分
1、任务调度者,
2、中间件,传递任务 broker(常用的有redis、rabbitmq)
3、任务执行者(work)
4、结果存储 backend(存储执行完成的结果,告知任务调度者)
二、创建一个task, task.py
import celery app = celery.Celery('tasks', broker='redis://localhost:6379') @app.task def first(): print "hello world"这样就写了一个任务的调度,接下来启动任务: celery -A task worker --loglevel=info
-A 后面python文件名, work表示启动一个子进程
三、调用此任务
from test1 import first first.delay() first.apply_async()delay和apply_async(异步)是两种调用方式;
看work进程就会答应下面的日志,说明调用成功
2018-02-04 14:16:06,792: WARNING/ForkPoolWorker-4] hello world
四、celery配置设置
之前的例子是在celery初始化的时候设置,celery有许多配置
app = celery.Celery('tasks', broker='redis://localhost:6379')
设置时区
app.conf.CELERY_TIMEZONE = 'Europe/London'
如果这样设置的话,会很麻烦,celery支持从文件进行设置
app.config_from_object()
例如task.py
import celery from myceleryconfig import myconfig app = celery.Celery() print myconfig.BROKER_URL app.config_from_object(myconfig) @app.task def add(x, y): return x + ymyceleryconfig.py
class myconfig(): BROKER_URL = 'redis://localhost:6379'
所有的celery設置都可以放在myceleryconfig.py裡面
具体设置哪些值,可以查看celery.app.utils