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,只要用就行了。

celery模块的更多相关文章

  1. Python3安装Celery模块后执行Celery命令报错

    1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...

  2. celery简单应用

    写作背景介绍 在celery简单入门中已经介绍了写作的背景,这篇文章主要是深入介绍celery的使用技巧.在实际的项目中我们需要明确前后台的分界线,因此我们的celery编写的时候就应该是分成前后台两 ...

  3. celery简单入门

    写作背景介绍 最近在做后台图像处理,需要使用到celery这个异步任务框架.但是使用的时候遇到很多技术问题,为了方便日后再遇到相似问题时能够快速解决.写下这篇文章也希望能够帮助共同奋战在同一战线的程序 ...

  4. celery rabbit mq 详解

    Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...

  5. Celery 分布式任务队列快速入门

    Celery 分布式任务队列快速入门 本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置cel ...

  6. Celery结合Django使用

    一.Celery介绍 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个 ...

  7. Celery 1

    Celery是一个用Python开发的异步的分布式任务调度模块 Celery有以下优点: 简单:一但熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接 ...

  8. 10: Celery

    目录: 1.1 Celery介绍 1.2 celery简单使用 1.3 在项目中如何使用celery 1.4 celery与Django项目最佳实践 1.5 基于步骤1.4:在django中使用计划任 ...

  9. Celery -- 分布式任务队列 及实例

    Celery 使用场景及实例 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置celery perio ...

随机推荐

  1. Introduction to the WinPcap Networking Libraries

    Introduction to the WinPcap Networking Libraries use wire shark or fiddler

  2. Java程序员最常犯的错误盘点之Top 10

    1. 数组转ArrayList 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: Arrays.asList确实会返回一个ArrayList对象,但是该类是Arra ...

  3. class文件检查器

    Class文件检查器保证装载的class文件内容有正确的内部结构,并且这些class文件互相间协调一致.Class文件检查器实现的安全目标之一就是程序的健壮性.如果某个有漏洞的编译器,或某个聪明的黑客 ...

  4. cpu乱序执行

    http://blog.163.com/zhaojie_ding/blog/static/1729728952007925111324379/?suggestedreading 处理器的乱序和并发执行 ...

  5. poj 1950(搜索)

    Dessert Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5430   Accepted: 2029 Descripti ...

  6. hdu3338 / 方格横纵和问题终极版,最大流斩

    此题被誉为神奇最大流,诱惑我去做了下,感觉也是通常的思路. 题意:1.用1-9去填,满足所给的行/列和要求(和那个什么游戏差不多...) 求一种合法方案,输出.如:   一看,直接就建图了,每个点在白 ...

  7. p标签注意事项

    <p> 哈哈,我是一个段落哦! <div id="box">我是一个萌萌的div</div> </p> 这样写的后果: 注意: p标 ...

  8. 51 Nod 1238 最小公倍数之和 V3 杜教筛

    题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1238 题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}l ...

  9. 洛谷—— P1342 请柬

    https://www.luogu.org/problemnew/show/1342 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤 ...

  10. 邁向IT專家成功之路的三十則鐵律 鐵律十二:IT人養生之道-德行

    所謂的「養生」在中國古代裡所指的是針對內在精神層面修為的提升,到了近代中醫所謂的養生,則除了包含最根本的內在精神層面之外,還涵蓋了外在身體的養護.在現今各行各業的人士當中,嚴格來說都應該要有一套專屬的 ...