400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

初识Celery

    

成都创新互联公司是专业的常宁网站建设公司,常宁接单;提供成都网站建设、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行常宁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

本系列文章的开发环境:

window 7 + python2.7 + pycharm5 + celery3.1.25 + django1.9.4

在我们日常的开发工作中,经常会遇到这几种情况:

1
2
3
1、在web应用中,用户触发一个操作,执行后台处理程序,这个程序需要执行很长时间才能返回结果。怎样才能不阻塞http请求,不让用户等待从而提高用户体验呢?
2、定时任务脚本:生产环境经常会跑一些定时任务脚本,假如你有上千台的服务器、上千种任务,定时任务的管理很困难,如何对job进行有效的管理?
3、异步需求:比如发送短信/邮件、推送消息、清理/设置缓存?

如果你有以上的需求,那么Celery可能对你很有用。

Celery - 分布式任务队列系统

Celery是一个可以处理大量消息的分布式任务系统,它凭借简单、灵活、可靠的特性被广泛使用。Celery聚焦于实时处理任务,同时也支持定时的任务调度。

1、特性:

2、架构图

 初识Celery

从上图中可以知道Celery包含如下组件:

开始使用Celery 

这里Broker和Result Backend都选择RabbitMQ。

1、安装

     1) 安装RabbitMQ

     2)  安装Celery 3.1.25

         为什么选择这个低版本?请见最下面的问题列表。

1
pip install celery==3.1.25

2、一个简单例子

2.1) 在一个目录中创建tasks.py文件,内容如下:

初识Celery

 celery = Celery(,backend=,broker=

初识Celery

     2.2) 启动celery worker

              到tasks.py文件那层目录,执行以下命令:

celery -A tasks worker --loglevel=info

启动输出信息如下:

初识Celery View Code

     2.3) 测试结果

           另起一个终端,还是到tasks.py那层目录,进入python命令行:

 初识Celery

这时celery worker会有提示信息:

初识Celery

 

 到此为止,celery入门就介绍到这里了,下一节介绍如何在django中使用celery。

 

 

遇到的问题列表: 

 1、启动celery worker时报错

初识Celery

ERROR:
`[2016-11-05 20:23:25,759: CRITICAL/MainProcess] Unrecoverable error: TypeError('must be integer, not _subprocess_handle',)
Traceback (most recent call last):
File "c:\development\env\zillow2\lib\site-packages\celery\worker\worker.py", line 203, in start
self.blueprint.start(self)
File "c:\development\env\zillow2\lib\site-packages\celery\bootsteps.py", line 119, in start
step.start(parent)
File "c:\development\env\zillow2\lib\site-packages\celery\bootsteps.py", line 370, in start
return self.obj.start()
File "c:\development\env\zillow2\lib\site-packages\celery\concurrency\base.py", line 131, in start
self.on_start()
File "c:\development\env\zillow2\lib\site-packages\celery\concurrency\prefork.py", line 112, in on_start
**self.options)
File "c:\development\env\zillow2\lib\site-packages\billiard\pool.py", line 1008, in init
self._create_worker_process(i)
File "c:\development\env\zillow2\lib\site-packages\billiard\pool.py", line 1117, in _create_worker_process
w.start()
File "c:\development\env\zillow2\lib\site-packages\billiard\process.py", line 122, in start
self._popen = self._Popen(self)
File "c:\development\env\zillow2\lib\site-packages\billiard\context.py", line 383, in _Popen
return Popen(process_obj)
File "c:\development\env\zillow2\lib\site-packages\billiard\popen_spawn_win32.py", line 64, in init
_winapi.CloseHandle(ht)
TypeError: must be integer, not _subprocess_handle

(zillow2) C:\DEVELOPMENT\zillow2\project>Traceback (most recent call last):
File "", line 1, in 
File "c:\development\env\zillow2\lib\site-packages\billiard\spawn.py", line 159, in spawn_main
new_handle = steal_handle(parent_pid, pipe_handle)
File "c:\development\env\zillow2\lib\site-packages\billiard\reduction.py", line 121, in steal_handle
_winapi.PROCESS_DUP_HANDLE, False, source_pid)
WindowsError: [Error 87] The parameter is incorrect

初识Celery

解决方案:这是因为windows系统不支持celery4以上版本,请降级到3.xx即可解决该问题

 


网站名称:初识Celery
文章转载:http://mzwzsj.com/article/gpcjgo.html

其他资讯

让你的专属顾问为你服务