简单了解celery-分布式异步任务调度系统
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-分布式异步任务调度系统相关推荐
- python分布式任务调度_Python使用Celery分布式异步队列/任务调度(基于Redis) - pytorch中文网...
今天使用爬虫有些耗时较长,需要使用任务调度,Celery是Python开发的分布式任务调度模块,Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有Rabb ...
- 遇见未知的Saturn |准备篇:分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...
- quarts集群 运维_分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)...
1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...
- Easy Scheduler 1.0.2 发布,分布式工作流任务调度系统
Easy Scheduler Release 1.0.2 Easy Scheduler 1.0.2是1.x系列中的第三个版本.此版本增加了调度开放接口.worker分组(指定任务运行的机器组).任务流 ...
- 大数据分布式工作流任务调度系统DolphinScheduler v1.3.4
简介: Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而 ...
- 分布式工作流任务调度系统Easy Scheduler正式开源
分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler ...
- 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
分布式定时任务调度系统技术解决方案(xxl-job.Elastic-job.Saturn) 参考文章: (1)分布式定时任务调度系统技术解决方案(xxl-job.Elastic-job.Saturn) ...
- 开源分布式工作流任务调度系统Easy Scheduler Release 1.0.2发布
Easy Scheduler Release 1.0.2 Easy Scheduler 1.0.2是1.x系列中的第三个版本.此版本增加了调度开放接口.worker分组(指定任务运行的机器组).任务流 ...
- python分布式任务调度开源_分布式工作流任务调度系统Easy Scheduler正式开源
分布式工作流任务调度系统Easy Scheduler正式开源 背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler终于 ...
最新文章
- GitHub服务中断24小时11分钟事故分析报告\n
- Yuhao and a Parenthesis
- 开发直播APP选择云服务器的优点
- 设备底座几个常见固定方式
- 例子---PHP与Form表单之三
- 如何用Camtasia为“微课”视频添加光标效果?
- 白话SOA:面向服务+组件+架构
- 投影幕布尺寸计算器_投影距离计算器
- VBA之正则表达式(30)-- 提取机构代码
- [IMX6DL][Android4.4] 超声波模块HC-SR04 Linux驱动源代码
- python2个子线程等待_Python的并发并行[1] - 线程[3] - 多线程的同步控制
- 香港上网吃到饱,一天18港币!去香港手机/笔电上网请爱用 3 HK 的 3G 循环储值咭(卡)
- 重要更新|Amazon S3 和 CloudFront 已迁移至 Amazon Trust Services
- python曲线拟合为什么会失败_SciPy曲线拟合失败幂定律 - python
- java转大数据的学习路线
- 企业邮箱和普通邮箱有什么区别
- android 自动唤醒解锁,Android-唤醒并解锁Devi
- pcf8563 C语言编程
- windows 8/8.1/10 下prolific usb-to-serial common port quds 无法安装解决办法
- 不相容方程组的最小二乘解