专栏首页若是烟花Celery 分布式框架 学习

Celery 分布式框架 学习

一、概要

官网: http://www.celeryproject.org/

官方文档: http://docs.celeryproject.org/en/latest/index.html

一个AMQP: http://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies

其他的文章,一般都太老了。还是直接看官方文档吧。

有问题还是直接去Google或直接去StackOverflow吧,百度真心不靠谱!!!


二、简单DEMO

tasks.py

# coding:utf-8

from celery import Celery

# backend = 'db+mysql://root:@localhost/celery'
backend = 'amqp'
broker = 'amqp://guest@localhost//'
app = Celery('tasks', backend=backend, broker=broker)


@app.task
def add(x, y):
    return x + y

添加参数直接以 worker 形式运行即可,便形成了一个 worker。

# celery -A tasks worker -l debug
# debug 调试模式,会输出更多调试信息
celery -A tasks worker -l info

#### 此时,在windows平台(win8 x64)出现问题

可以打开多个终端,执行上述命令。已形成 “分布式”多个 worker。

然后,添加异步任务。

D:\celery_project\cel>python
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> from tasks import add
>>> x = add.delay(3,9)
>>> x.status
'PENDING'
>>> x.ready()
False
>>>

#### 就在此时,很容易看到, worker 终端,显示任务已经完成,但是 主机 status状态:PENDING ready状态:False

然后各种百度,更换 backend -> amqp -> db+mysql 依旧无效,然后 在 StackOverflow 上找到了答案,吼吼~~~ 好兴奋的感觉

Problem: Celery 'Getting Started' not able to retrieve results; always pending

链接: https://stackoverflow.com/questions/25495613/celery-getting-started-not-able-to-retrieve-results-always-pending

解决方法就是,添加运行参数: celery -A tasks worker -l debug --pool=solo

D:\celery_project\cel>python
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> from tasks import add
>>> x = add.delay(3,6)
>>> x.status
'SUCCESS'
>>> x.ready()
True
>>> x.result
9

至此,Celery调度,基本使用基本可以,欢迎留言交流探讨~~~~好吧,其实欢迎指教~~~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Laravel框架学习 -- 安装

    Laravel 利用 Composer(Composer 中文)来管理其自身的依赖包。

    lpe234
  • 七日Python之路--第五天(之Django官方文档)

    之前一直使用Django自带的SQLite3数据库,感觉挺爽的,啥都不用管。但是,学习岂能贪图便利。遂开始使用MyQL。但是似乎不太顺利。首先在新建的项...

    lpe234
  • GCC编译静态库及动态库

    lpe234
  • 企业将如何克服云存储的安全挑战

    在这个数据时代,每时每秒都有的数据产生。而从惠普的一份报告显示,到2015年,数据将以10的21次方的PB级的量增长。另外,到了2020年,将有一万亿多个应用在...

    静一
  • python3学习之自定义函数

    def  函数名(*args):               ##接收任意数据,作为元组中的元素

    py3study
  • 如何在Android中实现一个简易的Http服务器

    最近遇到一个需求需要在App中创建一个Http服务器供供浏览器调用,用了下开源的微型Htpp服务器框架:NanoHttpd,项目地址:https://githu...

    砸漏
  • python日期和时间

    python中常用的处理时间的模块有两个:time 模块、datetime 模块,time模块是比较基础的一个模块,可满足对时间类型数据的基本处理;而 date...

    py3study
  • 从《一九八四》到《窃听风暴》

    大数据文摘
  • 好好管理你应用的文件夹,别再乱用了

    安卓碎片化的问题,由来已久,这次来看一下文件储存碎片化的问题。到底要怎么去正确选择和管理文件存储呢?

    Rouse
  • 以生活例子说明单线程与多线程

    在我看来单从程序的角度来看,一个好的程序的目标应该是性能与用户体验的平衡。当然一个程序是否能够满足用户的需求暂且不谈,这是业务层面的问题,我们仅仅讨论程序本身。...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券