Celery

Celery是管理分布式任务队列的工具,其本身并不是任务队列。

Celery常见概念有brokers、backend、workers、tasks。

brokers:中间人,是Celery存放/拿取产品的地方,即任务队列,常见有rabbitmq/redis/zookeeper。

backend:又称result stores,存储运行结果,常见有redis/memcached。

workers:Celery的工作者,从队列中取出任务并执行,将结果发送到backend。

tasks:任务。

简例

# tasks.py
from celery import Celery

app = Celery('tasks',
                    backend='redis://[host]:6379/0',
                    broker='amqp://[user]:[password]@[host]:5672')

@app.task
def add(x, y):
    return x + y

# 命令行启动worker,此时broker中还没有任务
celery -A tasks worker --loglevel=info

# 向broker发送任务并获取结果
from tasks import add

result = add.delay(2, 3)
while not result.ready():
    time.sleep(1)
print(result.get())

>>>: 5

例子中,app就是celery对象,它定义了对象的名称(用于命令行启动),存储者,任务队列。
add方法用app.task包装后,表明此函数为任务执行者。
执行add.delay()方法,参数传入到执行者,并会返回结果,当result.ready()为真时,表明结果已返回至存储者,可通过result.get()获取该结果。

与pika的区别

pika是用来连接rabbitmq的python模块,rabbitmq本身只有存储功能,而没有任务分发调度功能,celery就是用来做任务分配的,当然也可以为pika写一个调度代码,不过有现成的celery,只要用就行了。

最新文章

  1. 【java开发】方法重写和方法重载概述
  2. hadoop_elk架构图
  3. XMPP框架下微信项目总结(3)获取点子名片信息(个人资料)更新电子名片
  4. 利用Google Speech API实现Speech To Text
  5. jsp学习(三)
  6. centos环境源码安装postgresql9.4
  7. 【Git】Git教程
  8. oschina 建站系统
  9. cocos2d-x环境搭建(win7+cocos2d-x-3.0)
  10. 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
  11. shell脚本中给字符串添加颜色
  12. ios12更新开发者需要做什么
  13. 浅析H5图片上传
  14. 从零开始搭建FAQ引擎--深度语义匹配
  15. osg探究补充:DatabasePager类简介
  16. !important的用法
  17. TensorFlow在windows10上的安装与使用(一)
  18. 聊聊Postgres中的IPC之SI Message Queue
  19. RabbitMQ (十六) 消息队列的应用场景 (转)
  20. [CF730J]Bottles

热门文章

  1. [USACO11DEC] Grass Planting (树链剖分)
  2. 面试题之redis的过期时间原理
  3. hdu 1277 AC自动机
  4. 挑战程序设计2 KD树
  5. C语言第五题
  6. OpenJudge 东方14ACM小组 / 20170123 06:Challenge 3
  7. 【CF676D】Theseus and labyrinth(BFS,最短路)
  8. 将xml转换为PHP数组
  9. C# DataSet与DataTable的区别和用法
  10. Java 界面编程【02】事件注册