celery是Python开发的分布式异步任务调度系统,Celery支持的消息服务有rmq、redis等
以下代码使用的是redis作为消息队列,当然官网推荐生产环境使用rmq。

RabbitMQ is feature-complete, stable, durable and easy to install.
It’s an excellent choice for a production environment. Detailed
information about using RabbitMQ with Celery:

celery环境包下载安装,其中指定了阿里镜像,这样下载速度会快

pip install -i http://mirrors.aliyun.com/pypi/simple celery
pip install -i http://mirrors.aliyun.com/pypi/simple celery-with-redis

celery由5个主要组件组成:
producer: 任务发布者, 通过调用API向celery发布任务的程序
celery beat: 任务调度, 根据配置文件发布定时任务
worker: 实际执行任务的程序
broker: 接受任务消息,存入队列再按顺序分发给worker执行
backend: 存储结果的服务器

通过celery worker --app=tasks --loglevel=info 或者celery worker -A tasks -l info

进行本脚本的worker程序启动,代码请查看后面代码区域,简单的一个a+b程序
启动后窗口提示如下

-------------- celery@Lenovo-PC v3.1.24 (Cipater)
---- **** -----
--- * ***  * -- Windows-8-6.2.9200
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         test1:0x33052e8
- ** ---------- .> transport:   redis://127.0.0.1:6379/5
- ** ---------- .> results:     redis://127.0.0.1:6379/6
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]
 -------------- .> celery           exchange=celery(direct) key=celery
[tasks]. tasks.add[2016-10-29 13:14:30,773: INFO/MainProcess] Connected to redis://127.0.0.1:6379/
5
[2016-10-29 13:14:30,786: INFO/MainProcess] mingle: searching for neighbors
[2016-10-29 13:14:31,891: INFO/MainProcess] mingle: all alone
[2016-10-29 13:14:31,930: WARNING/MainProcess] celery@Lenovo-PC ready.

启动后可以在命令行中执行python进行python cmd。
输入如下

>>> from tasks import *
>>> add.delay(1,2)

客户端显示 <AsyncResult: 660b5456-089a-455a-9abd-6c4366b18175> 类似的信息
服务器端可以看到如下的提示

[2016-10-29 13:22:11,693: INFO/MainProcess] Received task: tasks.add[660b5456-08
9a-455a-9abd-6c4366b18175]
[2016-10-29 13:22:11,717: INFO/MainProcess] Task tasks.add[660b5456-089a-455a-9a
bd-6c4366b18175] succeeded in 0.0199999809265s: 3

celery的数据怎么存储的呢?
可以查看文章代码区域的代码。
同时我们也进去redis里面看看。

此时我们把celery worker程序关闭,继续执行以下命令

add.delay(100,100)
add.delay(10,2) 

使用 Redis Desktop Manager(基于QT5开源)工具来查看redis的数据,下载地址为 https://redisdesktop.com,如果官网下载慢,可以在这里下载http://download.csdn.net/detail/bojie5744/9667688。
该工具为跨平台的,支持window,mac,ubuntu等。
代码中指定了celery存储的地方在5/6仓库。
可以发现5仓库(图示①处理)的celery数据集合里面有2条记录,那就是刚才把celery worker关闭后执行的2次请求的消息内容(图示③)。
图示②中的数据就是结果的存储,那是我们运行worker后第一次执行的add.delay(1,2)命令生成的。
结果体如下:

{
“status”: “SUCCESS”,
“traceback”: null,
“result”: 3,
“children”: []
}

当我们现在启动worker,即执行celery worker -A tasks -l info
会发现celery数据集合里面的2条未执行任务消息被清空,因为worker启动后就开始了任务的执行。

代码区域

#coding=utf-8
from celery import  *
broker = 'redis://127.0.0.1:6379/5'  #消息存储数据存储在仓库5
backend = 'redis://127.0.0.1:6379/6' #消息执行后的结果包括函数返回值的数据存储在仓库6
app = Celery('test1', broker=broker,backend=backend)app.conf.update(CELERY_TASK_SERIALIZER='json', #任务消息信息保存为json格式CELERY_ACCEPT_CONTENT=['json'],CELERY_RESULT_SERIALIZER='json' # 结果信息保存为json格式
)@app.task
def add(a, b):return a+b 

简单了解celery-分布式异步任务调度系统相关推荐

  1. python分布式任务调度_Python使用Celery分布式异步队列/任务调度(基于Redis) - pytorch中文网...

    今天使用爬虫有些耗时较长,需要使用任务调度,Celery是Python开发的分布式任务调度模块,Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有Rabb ...

  2. 遇见未知的Saturn |准备篇:分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)

    1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...

  3. quarts集群 运维_分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)...

    1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...

  4. Easy Scheduler 1.0.2 发布,分布式工作流任务调度系统

    Easy Scheduler Release 1.0.2 Easy Scheduler 1.0.2是1.x系列中的第三个版本.此版本增加了调度开放接口.worker分组(指定任务运行的机器组).任务流 ...

  5. 大数据分布式工作流任务调度系统DolphinScheduler v1.3.4

    简介: Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而 ...

  6. 分布式工作流任务调度系统Easy Scheduler正式开源

    分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler ...

  7. 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)

    分布式定时任务调度系统技术解决方案(xxl-job.Elastic-job.Saturn) 参考文章: (1)分布式定时任务调度系统技术解决方案(xxl-job.Elastic-job.Saturn) ...

  8. 开源分布式工作流任务调度系统Easy Scheduler Release 1.0.2发布

    Easy Scheduler Release 1.0.2 Easy Scheduler 1.0.2是1.x系列中的第三个版本.此版本增加了调度开放接口.worker分组(指定任务运行的机器组).任务流 ...

  9. python分布式任务调度开源_分布式工作流任务调度系统Easy Scheduler正式开源

    分布式工作流任务调度系统Easy Scheduler正式开源 背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler终于 ...

最新文章

  1. GitHub服务中断24小时11分钟事故分析报告\n
  2. Yuhao and a Parenthesis
  3. 开发直播APP选择云服务器的优点
  4. 设备底座几个常见固定方式
  5. 例子---PHP与Form表单之三
  6. 如何用Camtasia为“微课”视频添加光标效果?
  7. 白话SOA:面向服务+组件+架构
  8. 投影幕布尺寸计算器_投影距离计算器
  9. VBA之正则表达式(30)-- 提取机构代码
  10. [IMX6DL][Android4.4] 超声波模块HC-SR04 Linux驱动源代码
  11. python2个子线程等待_Python的并发并行[1] - 线程[3] - 多线程的同步控制
  12. 香港上网吃到饱,一天18港币!去香港手机/笔电上网请爱用 3 HK 的 3G 循环储值咭(卡)
  13. 重要更新|Amazon S3 和 CloudFront 已迁移至 Amazon Trust Services
  14. python曲线拟合为什么会失败_SciPy曲线拟合失败幂定律 - python
  15. java转大数据的学习路线
  16. 企业邮箱和普通邮箱有什么区别
  17. android 自动唤醒解锁,Android-唤醒并解锁Devi
  18. pcf8563 C语言编程
  19. windows 8/8.1/10 下prolific usb-to-serial common port quds 无法安装解决办法
  20. 不相容方程组的最小二乘解

热门文章

  1. 在大数据的泳池里裸泳 该如何保护个人安全信息
  2. EasyDSS流媒体服务器软件-实现的多码率视频点播功能说明
  3. 3.3. Foreign Keys
  4. 漫途MTW460SI采集终端助力解决水库大坝安全监测问题
  5. 深度学习基础: BP神经网络训练MNIST数据集
  6. 门禁系统服务器功能配置,门禁系统服务器功能配置
  7. 超级计算机对百姓有什么用,超级计算机和百姓有何关系
  8. 矩阵分析理论在实际工程中的应用_ProNas-振动噪声工程界新一代的前沿技术
  9. 任性!我开发了一款自己用的天气预报app
  10. java学习之路7——常用类