最近一直再找调度工具,发现Python下的分布式任务工具Celery很不错,正在做尝试。最近几篇博客会介绍这个工具。
Celery的文档地址:
http://docs.celeryproject.org/en/latest/index.html
0.安装及其他准备工作
pip install -U Celery
由于Celery需要有地方存储调度信息Brokers,目前stable支持的是RabbitMQ、Redis,
我使用了RabbitMQ,就使用docker启动了一个,做测试。
1.基本测试
参考文档:First Steps with Celery
http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html
这一步主要按照示例来介绍:
step1:新建tasks.py
其中add函数用来测试调度。
from celery import Celery
app = Celery('tasks', broker='amqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
step2:启动服务
启动:
$ celery -A tasks worker --loglevel=info
关闭:
按 Ctrl+C
或作为后台服务启动
celery multi start celery -A tasks -l info
celery multi stop celery -A tasks -l info
step3:同一台机器python中调用task
>>> from tasks import add
>>> result = add.delay(4, 4)
#等价于
>>> add.apply_async([4,4])
#可以设置延时 为秒
>>> add.apply_async([4,4],countdown=10)
这时候调度就起作用了。
step4:多台机器调用task
和单机器调用命令一样,只是会随机分布到不同机器里面。
3.下一步测试
如何设计不同流程的workflow,并行+串行?
如何调用shell脚本,如何调用制定某一台机器运行?
如何监控?