标签:res task art 分离 基础 return Superviso 监测 roc
celery基础介绍:首先做一个基础的例子体验什么是celery
[root@localhost www]# cat tasks.py
#!/usr/bin/python
#coding:utf-8
from celery import Celery
app = Celery(‘tasks‘, broker=‘amqp://‘,backend=‘redis://‘)
#app.config_from_object(‘celeryconfig‘)
@app.task
def add(x, y):
return x + y
broker是接受的消息队列的地址我这里用的rabbitmq的地址
backend是后端的存储我这里用的是redis
启动task
celery -A tasks worker --loglevel=info
然后我们新开一个终端进入python命令行去调用task
#python
#from tasks import add
#add.delay(2,4)
可以看出我们每次在python终端调用add这个任务 celery的worker 信息里面就会收到操作并记录信息 同时redis里面记录相应的状态
======================================================
celery与tasks分离
[root@localhost test]# cat celery.py
#!/usr/bin/python
#coding:utf-8
from future import absolute_import ,unicode_literals
from celery import Celery
app = Celery(
‘test‘,
broker=‘amqp://‘,
backend=‘redis://‘,
include=[‘test.tasks‘]
)
app.conf.update(
result_expires=3500,
)
if name == ‘main‘:
app.start()
[root@localhost test]# cat tasks.py
#!/usr/bin/python
#coding:utf-8
from future import absolute_import ,unicode_literals
from test.celery import app
@app.task
def add(x,y):
return x + ybr/>@app.task
def cheng(x,y):
return x * y
后台启动 celery
celery multi start w1 -A proj -l info --logfile=/var/log/celery.log
celery有一堆的配置参数来控制每一个task这里不做解说详情见官网
重点是思路:
1 以前批量执行paramiko脚本的时候,一旦执行的机器多了,后来优化成多线程用threading来做,看到这个异步的任务队列,我们可以把机器按队列进行分组,进行路由限制数量,流量控制等等来对大批量的task任务进行分批量并发操作
2 还可以结合python框架web界面 applicate的过程,celery的worker的过程状态和后端的结果状态都集成到一个页面,实时监测,界面化操作
标签:res task art 分离 基础 return Superviso 监测 roc
原文地址:http://blog.51cto.com/13945009/2170428