http://www.liaoxuefeng.com/article/00137760323922531a8582c08814fb09e9930cede45e3cc000

Celery是Python开发的分布式任务调度模块,今天抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务。

Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQ、Redis甚至是数据库,当然redis应该是最佳选择。

安装Celery

用pip或easy_install安装:

$ sudo pip install Celery

或着:

$ sudo easy_install Celery

使用Redis作为Broker时,再安装一个celery-with-redis。

开始编写tasks.py:

# tasks.py
import time
from celery import Celerycelery = Celery('tasks', broker='redis://localhost:6379/0') @celery.task def sendmail(mail): print('sending mail to %s...' % mail['to']) time.sleep(2.0) print('mail sent.') 

然后启动Celery处理任务:

$ celery -A tasks worker --loglevel=info

上面的命令行实际上启动的是Worker,如果要放到后台运行,可以扔给supervisor。

如何发送任务?非常简单:

>>> from tasks import sendmail
>>> sendmail.delay(dict(to='celery@python.org')) <AsyncResult: 1a0a9262-7858-4192-9981-b7bf0ea7483b> 

可以看到,Celery的API设计真的非常简单。

然后,在Worker里就可以看到任务处理的消息:

[2013-08-27 19:20:23,363: WARNING/MainProcess] celery@MichaeliMac.local ready. [2013-08-27 19:20:23,367: INFO/MainProcess] consumer: Connected to redis://localhost:6379/0. [2013-08-27 19:20:45,618: INFO/MainProcess] Got task from broker: tasks.sendmail[1a0a9262-7858-4192-9981-b7bf0ea7483b] [2013-08-27 19:20:45,655: WARNING/PoolWorker-4] sending mail to celery@python.org... [2013-08-27 19:20:47,657: WARNING/PoolWorker-4] mail sent. [2013-08-27 19:20:47,658: INFO/MainProcess] Task tasks.sendmail[1a0a9262-7858-4192-9981-b7bf0ea7483b] succeeded in 2.00266814232s: None 

Celery默认设置就能满足基本要求。Worker以Pool模式启动,默认大小为CPU核心数量,缺省序列化机制是pickle,但可以指定为json。由于python调用UNIX/Linux程序实在太容易,所以,用Celery作为异步任务框架非常合适。

Celery还有一些高级用法,比如把多个任务组合成一个原子任务等,还有一个完善的监控接口,以后有空再继续研究。

任务调度利器:Celery相关推荐

  1. python 任务调度 celery_斑马斑马-09-白云之上-python任务调度之celery

    一.celery简介 1:celery是什么 Celery是一个python开发的异步分布式任务调度模块. 2:celery是使用场景 异步任务:将耗时操作任务提交给Celery去异步执行,比如发送短 ...

  2. 『分布式任务调度利器』掌握ScheduleMaster分布式任务调度平台的实践指南

  3. Python定时任务库Celery——分布式任务队列

    文章目录 定时任务库对比 简介 安装 初试 进阶 项目结构 配置文件 Celery实例化 实时任务 定时任务 调用任务 启动定时任务 任务状态跟踪 递归调用 Celery配置 命令行参数 分布式集群部 ...

  4. celery的使用(最新详细解析)

    celery的使用(最新详细解析) 一. Celery简介 Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度. Celery的架构由三部 ...

  5. 54 分布式任务队列Celery

    随着信息时代的持续发展,越来越复杂的业务需求对自动化运维的要求上了一个新的台阶,任务调度系统也由单一主机任务调度系统向分布式任务调度系统过度.无论是业务层面的作业调度还是运维本身的作业调度需求,分布式 ...

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

    本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置celery periodic task 一 ...

  7. python 分布式队列_〖Python〗-- Celery分布式任务队列

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

  8. Python 第三方库之 Celery 分布式任务队列

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

  9. 利用 Celery 构建 Web 服务的后台任务调度模块

    来源:http://www.tuicool.com/articles/Enaeymm 任务队列在 Web 服务里的应用 在 Web2.0 后的时代,社交网站.搜索引擎的的迅猛发展对 Web 服务的后台 ...

最新文章

  1. 矢量图面层和线层相交得到相交后的线层文件(gis相交)
  2. 比MAE更强,FAIR新方法MaskFeat用HOG刷新多个SOTA
  3. 大数据WEB阶段(十一)Ajax、URL编码
  4. 基于微软Synchronization Services双向同步技术在企业项目中的架构应用研究
  5. 关于servlet中出现GET方法不能应用于此url的解决办法
  6. java 数据类型之原码,补码,反码
  7. Oracle系统表大全(转)
  8. 10.31,11.1外出纪要
  9. python为啥叫屁眼_python的递归
  10. 177.第N高的薪水
  11. HTTP协议详解(经典)
  12. 更改计算机bios密码怎么办,计算机BIOS通用密码的修改
  13. [Python数据分析]NBA的球星们喜欢在哪个位置出手
  14. 米的换算单位和公式_小学数学单位换算公式(附练习题)
  15. 【现控理论】(一、系统的传递函数矩阵)----学习笔记
  16. 从零开始成为一名合格的数据分析师:为什么必须学统计学?
  17. WPS画报的电脑壁纸怎么下载
  18. 坑:解决64位2013word无法安装32位Visio的问题
  19. ffmpeg 的 tbr tbc 和 tbn的意义
  20. 《缠中说禅108课》76:逗庄家玩的一些杂史 2

热门文章

  1. DNS基本原理与配置
  2. careercup-C和C++ 13.2
  3. window 下Eclipse c++的开发环境配置
  4. 音视频技术:视频质量评价方法简介 1
  5. 无序列表属性 隐藏方式 JS简介
  6. 剑指offer十九之顺时针打印矩阵
  7. EasyUI datagrid动态加载json数据
  8. 关于php插件pdo_mysql的安装
  9. iOS UITouch触摸与UIGesture手势.01.事件、触摸(touch)事件
  10. memcached 缓存服务器