欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

初識Celery

    

成都創(chuàng)新互聯(lián)公司是專業(yè)的常寧網(wǎng)站建設(shè)公司,常寧接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行常寧網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

本系列文章的開發(fā)環(huán)境:

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

在我們?nèi)粘5拈_發(fā)工作中,經(jīng)常會遇到這幾種情況:

1
2
3
1、在web應(yīng)用中,用戶觸發(fā)一個操作,執(zhí)行后臺處理程序,這個程序需要執(zhí)行很長時間才能返回結(jié)果。怎樣才能不阻塞http請求,不讓用戶等待從而提高用戶體驗?zāi)兀?/code>
2、定時任務(wù)腳本:生產(chǎn)環(huán)境經(jīng)常會跑一些定時任務(wù)腳本,假如你有上千臺的服務(wù)器、上千種任務(wù),定時任務(wù)的管理很困難,如何對job進(jìn)行有效的管理?
3、異步需求:比如發(fā)送短信/郵件、推送消息、清理/設(shè)置緩存?

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

Celery - 分布式任務(wù)隊列系統(tǒng)

Celery是一個可以處理大量消息的分布式任務(wù)系統(tǒng),它憑借簡單、靈活、可靠的特性被廣泛使用。Celery聚焦于實時處理任務(wù),同時也支持定時的任務(wù)調(diào)度。

1、特性:

  • 查看定時任務(wù)的執(zhí)行情況,比如執(zhí)行是否成功、當(dāng)前狀態(tài)、執(zhí)行任務(wù)花費(fèi)的時間等。

  • 易于其他框架集成,如使用django管理后臺添加、更新、刪除任務(wù)。

  • 方便把任務(wù)和配置管理相關(guān)聯(lián)。

  • 可選多進(jìn)程、Eventlet和Gevent三種模式并發(fā)執(zhí)行。

  • 提供錯誤處理機(jī)制。

2、架構(gòu)圖

 初識Celery

從上圖中可以知道Celery包含如下組件:

  • Producer:凡是調(diào)用了Celery API、函數(shù)或裝飾器而產(chǎn)生任務(wù)并交給任務(wù)隊列處理的都是任務(wù)生產(chǎn)者。

  • 任務(wù)調(diào)度組件:Beat進(jìn)程會讀取配置文件的內(nèi)容,周期性地將配置中到期需要執(zhí)行的任務(wù)發(fā)送給任務(wù)隊列。

  • Celery Worker:負(fù)責(zé)執(zhí)行任務(wù)的線程,可以在多臺服務(wù)器運(yùn)行提高執(zhí)行效率。

  • Broker:消息中間件,負(fù)責(zé)接受任務(wù)生產(chǎn)者的任務(wù),并且轉(zhuǎn)發(fā)work進(jìn)行執(zhí)行。Celery目前支持RabbitMQ、redis、MongoDB、Beanstalk、SQLAlchemy、Zookeeper等作為消息中間件,官方推薦使用RabbitMQ。

  • Result Backend:任務(wù)處理完后保存狀態(tài)信息和結(jié)果,以供查詢。Celery默認(rèn)已支持Redis、RabbitMQ、MongoDB、Django ORM、SQLAlchemy等方式。

開始使用Celery 

這里Broker和Result Backend都選擇RabbitMQ。

1、安裝

     1) 安裝RabbitMQ

     2)  安裝Celery 3.1.25

         為什么選擇這個低版本?請見最下面的問題列表。

1
pip install celery==3.1.25

2、一個簡單例子

2.1) 在一個目錄中創(chuàng)建tasks.py文件,內(nèi)容如下:

初識Celery

 celery = Celery(,backend=,broker=

初識Celery

     2.2) 啟動celery worker

              到tasks.py文件那層目錄,執(zhí)行以下命令:

celery -A tasks worker --loglevel=info

啟動輸出信息如下:

初識Celery View Code

     2.3) 測試結(jié)果

           另起一個終端,還是到tasks.py那層目錄,進(jìn)入python命令行:

 初識Celery

這時celery worker會有提示信息:

初識Celery

 

 到此為止,celery入門就介紹到這里了,下一節(jié)介紹如何在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系統(tǒng)不支持celery4以上版本,請降級到3.xx即可解決該問題

 

網(wǎng)頁題目:初識Celery
轉(zhuǎn)載來源:http://www.chinadenli.net/article10/gpcjgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)網(wǎng)站收錄動態(tài)網(wǎng)站建站公司定制開發(fā)定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作