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. 爬虫【自动登陆github和抽屉】

    自动登陆github用户详情页 代码 #! /usr/bin/env python # -*- coding: utf- -*- # __author__ = "wuxiaoyu" ...

  2. 单击gridview中的选择按钮跳转到另一个页面的方法

    原文发布时间为:2008-07-24 -- 来源于本人的百度文章 [由搬家工具导入] 单击gridview中的选择按钮跳转到另一个页面的方法: 在gridview的事件中双击 SelectedInde ...

  3. 苹果safari支持flex布局

    今天突然发现flex布局不支持safari  解决办法 .page-wrap { display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ disp ...

  4. poj 2492 A Bug's Life 二分图染色 || 种类并查集

    题目链接 题意 有一种\(bug\),所有的交往只在异性间发生.现给出所有的交往列表,问是否有可疑的\(bug\)(进行同性交往). 思路 法一:种类并查集 参考:https://www.2cto.c ...

  5. Install Battery Historian

    1. Recommended extra packages for Trusty 14.04 $ sudo apt-get update $ sudo apt-get install \ linux- ...

  6. select、poll和epoll的区别(转载)

    select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select ...

  7. spring MVC学习之二

    什么是Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MV ...

  8. CodeForces 424D: ...(二分)

    题意:给出一个n*m的矩阵,内有一些数字.当你从一个方格走到另一个方格时,按这两个方格数字的大小,有(升,平,降)三种费用.你需要在矩阵中找到边长大于2的一个矩形,使得按这个矩形顺时针行走一圈的费用, ...

  9. 关于Redux到底是个什么鬼

    原文链接:https://zhuanlan.zhihu.com/p/20641377 我们故事的主人公,小明. 小明大学刚毕业,摆脱了宿舍的集体生活,自己在外面租了个一室一厅的小公寓住. 这是客厅的平 ...

  10. 快速上手 Echarts

    最近使用到了 百度的 Echarts 数据可视化工具,这里简单介绍如何快速上手. 一.下载 这里选择目前最新版本,4.2.1 地址:https://github.com/apache/incubato ...