先来一张图,这是在网上最多的一张Celery的图了,确实描述的非常好

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。

消息中间件

Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis, MongoDB (experimental), Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ

任务执行单元

Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储

Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, Redis,memcached, MongoDB,SQLAlchemy, Django ORM,Apache Cassandra, IronCache

OK 废话就说到这, 来点使用的。

首先你也看到了, 你要有一个消息中间件,此处我们选择rabbitmq,为什么不用redis或者sqs呢,首先这两个我都用过了,想接触以下rabbitmq,所以果断选择这个。

Now 安装rabbitmq!
官网介绍有安装方法, 我贴以下网址吧,自己看看,很简单很简单。 我是Mac系统 http://www.rabbitmq.com/install-standalone-mac.html 如果是其他系统自己对应下。 可以把sbin的路径配置到path里面(我比较懒 没加,所以去到解压目录,囧)

启动管理插件:sbin/rabbitmq-plugins enable rabbitmq_management
启动rabbitmq:sbin/rabbitmq-server -detached

ok, now,rabbitmq已经启动,可以打开页面来看看
地址:http://localhost:15672/#/
用户名密码都是guest
现在可以进来了把,可以看到具体页面。
关于rabbitmq的配置,网上很多 自己去搜以下就ok了。

好了 消息中间件有了,现在该来代码了,我是在celeby官网看的,如果觉得我代码有问题,可以自己去官网看,嘿嘿。

安装celeby。
建议使用 virtualenv,具体怎么用 参考
http://www.nowamagic.net/academy/detail/1330228
http://liuzhijun.iteye.com/blog/1872241

首先,定义一个task。

from celery import Celeryapp = Celery('tasks', backend='amqp://guest@localhost//', broker='amqp://guest@localhost//')@app.task
def add(x, y):return x + y

保存为tasks.py
—>broker 就是中间件了,自己看着改吧, backend就是 后端来发送状态消息,保持追踪任务的状态,存储或发送这些状态

Now 可以启动了
命令: celery -A tasks worker –loglevel=info
想要查看完整的命令行参数列表
命令:celery worker –help 或者
celery help

现在 另开一个terminal,启用虚拟环境, ipython 启动python console

In [9]: from tasks import addIn [10]: result = add.delay(6, 7)

现在你可以在用之前命令启动的终端中看到输出,而且可以验证结果。
调用任务会返回一个 AsyncResult 实例,可用于检查任务的状态,等待任务完成或获取返回值, 而且现在我们也设置了一个用于保存结果和状态等信息的backend, 现在你可以成功的拿到结果, 如果你print result, 你会看到一串字符串, 类似与uuid。
如下方式:

In [11]: result.ready()
Out[11]: TrueIn [12]: result.get(timeout=1)
Out[12]: 13In [13]: result.get(propagate=False)
Out[13]: 13

ok 现在看到结果了吧。
注: propagate的作用 倘若任务抛出了一个异常, get() 会重新抛出异常, 但你可以指定 propagate 参数来覆盖这一行为。

以上就是一些代码了。

下面是 celery的配置,配置的话 你不想看这个 可以去官网看,比我的详细的多。

app.conf.update(CELERY_TASK_SERIALIZER='json',CELERY_ACCEPT_CONTENT=['json'],  # Ignore other contentCELERY_RESULT_SERIALIZER='json',CELERY_TIMEZONE='Europe/Oslo',CELERY_ENABLE_UTC=True,
)

但是对于大型项目来说 这样配置就显得很low,这个时候可以用模块。你可以调用 config_from_object() 来让 Celery 实例加载配置模块。
app.config_from_object(‘celeryconfig’)

celeryconfig.py

BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True

可以使用 python -m celeryconfig 来验证配置是否正确。

好了 这是这篇博客的全部,稍后还有有的,谢谢。

Python 并行分布式框架:Celery 超详细介绍相关推荐

  1. Python 并行分布式框架 Celery

    Celery 官网:http://www.celeryproject.org Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index. ...

  2. python并发分布式框架Celery搭建

    最近项目用到一个好东西,分享给大家,简单,有效,这就是我的感受!先来个图 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(t ...

  3. python 分布式框架_Python 并行分布式框架:Celery 超详细介绍

    本博客摘自:http://blog.csdn.net/liuxiaochen123/article/details/47981111 先来一张图,这是在网上最多的一张Celery的图了,确实描述的非常 ...

  4. python分布式框架有哪些_Python并行分布式框架Celery详解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. 卷积神经网络超详细介绍

    文章目录 1.卷积神经网络的概念 2. 发展过程 3.如何利用CNN实现图像识别的任务 4.CNN的特征 5.CNN的求解 6.卷积神经网络注意事项 7.CNN发展综合介绍 8.LeNet-5结构分析 ...

  6. 卷积神经网络(CNN)超详细介绍

    文章转自:https://blog.csdn.net/jiaoyangwm/article/details/80011656 文章目录 1.卷积神经网络的概念 2. 发展过程 3.如何利用CNN实现图 ...

  7. 卷积神经网络超详细介绍1

    1.卷积神经网络的概念 2. 发展过程 3.如何利用CNN实现图像识别的任务 4.CNN的特征 5.CNN的求解 6.卷积神经网络注意事项 7.CNN发展综合介绍 8.LeNet-5结构分析 9.Al ...

  8. 卷积神经网络超详细介绍(转载)

    卷积神经网络超详细介绍 文章目录 1.卷积神经网络的概念 2. 发展过程 3.如何利用CNN实现图像识别的任务 4.CNN的特征 5.CNN的求解 6.卷积神经网络注意事项 7.CNN发展综合介绍 8 ...

  9. 【语义分割】1、语义分割超详细介绍

    文章目录 一.分割方法介绍 1.1 Fully Convolutional Networks [2015] 1.1.1 FCN 1.1.2 ParseNet 1.2 Encoder-Decoder B ...

最新文章

  1. Leetcode 455. 分发饼干 解题思路及C++实现
  2. sqlserver sql语句|经典sql语句|实用sql语句
  3. 窗体测试只能用于本地测试_爆料:微软 Win10X 将首先用于测试单屏笔记本
  4. 学机械也想转嵌入式?
  5. C#XmlDocument无法读取utf-16文件
  6. java将对象 缓存_ehcache java 对象缓存怎么实现
  7. raspberry ubuntu 修改源为清华_Ubuntu 下 Janus Server 搭建笔记
  8. 基础编程题目集 6-4 求自定类型元素的平均 (10 分)
  9. Linux内核热补丁方案对比
  10. Django学习手册 - ORM 外键
  11. 如何设置访问共享弹出窗口
  12. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)签到题K Co-prime Permutation,L Let‘s Play Curling
  13. MySQL引擎详解(二)——MyISAM引擎特性
  14. antd的Tree控件实现点击展开功能
  15. 一些自用的编程工具推荐
  16. uni-app 弹幕插件
  17. 禁止APP录屏和截屏
  18. 《Java编程思想》读书笔记分享
  19. can口通信的软件测试,RT1052+8、CAN通信例程测试
  20. LaTeX排版常用字体和格式设置

热门文章

  1. 经纬恒润加盟中国汽车芯片产业创新战略联盟,助力国产汽车芯片做大做强
  2. 朴素贝叶斯定理一(原理与例子)
  3. base编码图片导致浏览器卡顿页面加载特别慢怎么办
  4. win10好使的软件
  5. 使用防近视台灯有效果吗?口碑很好的护眼台灯分享
  6. Bootstrap——排版(标题、段落、强调、缩略语、引用)
  7. 跨境早报| 亚马逊新站点来了!又一条中国至俄罗斯货运航线将启动?
  8. 使用unity完成华为游戏的初始化和华为帐号登录
  9. 编程之美 1.6 买饮料问题
  10. MCU极海 APM32F103VET6 兼容替代 STM32F103VET6