CentOS 7系統(tǒng)下的Celery+redis安裝運(yùn)行實(shí)戰(zhàn)記錄

參考資料來源:
https://www.cnblogs.com/alex3714/p/6351797.html

Celery的相關(guān)介紹和說明

Celery3.7的中文文檔:
http://docs.jinkan.org/docs/celery/getting-started/first-steps-with-celery.html

1:Celery的作用主要是用于做相關(guān)的--異步任務(wù)神器
2:結(jié)合redis作為中間件主要用戶任務(wù)的存儲(chǔ)和處理結(jié)果的存儲(chǔ)
Celery有以下優(yōu)點(diǎn)(抄參考資料來源):
(1)簡(jiǎn)單:一單熟悉了celery的工作流程后值朋,配置和使用還是比較簡(jiǎn)單的
(2)高可用:當(dāng)任務(wù)執(zhí)行失敗或執(zhí)行過程中發(fā)生連接中斷背蟆,celery 會(huì)自動(dòng)嘗試重新執(zhí)行任務(wù)
(3)快速:一個(gè)單進(jìn)程的celery每分鐘可處理上百萬個(gè)任務(wù)
(4)靈活: 幾乎celery的各個(gè)組件都可以被擴(kuò)展及自定制

Celery工作流程圖示

案例實(shí)踐步驟

說明:該示例是實(shí)踐參考https://www.cnblogs.com/alex3714/p/6351797.html
使用Redis做broker俗壹!

配置Redis作為中間件
相關(guān)格式:redis://:password@hostname:port/db_number

redis://:password@hostname:port/db_number
或
redis://localhost:6379/0
第1步:安裝redis

(安裝參考:http://www.reibang.com/p/c450612c6295)

第2步:安裝celery模塊
# pip install celery
第3步:安裝celery-with-redis或者直接安裝reids模塊模塊
# pip install celery-with-redis
或
# pip install redis
第4步:啟動(dòng)redis-server服務(wù)
# redis-server /usr/local/redis/redis.conf 
# 啟動(dòng)成功如圖示:
[root@localhost ~]# ps -ef |grep redis
root       5620      1  0 03:06 ?        00:00:03 redis-server 0.0.0.0:6379
root       5795   5778  0 03:52 pts/2    00:00:00 grep --color=auto redis
[root@localhost ~]#
第5步:編寫異步任務(wù)測(cè)試示例麻养,命名為tasks.py

注:此地方示例使用到了python3榜晦,所以請(qǐng)先提前安裝好python3的環(huán)境

# cd /data/app/celeryTest/
# touch tasks.py
# nano  tasks.py

把下面的代碼保存到tasks.py文件中

from celery import Celery
app = Celery('tasks',
             broker='redis://:123456@localhost:6379/0',
             backend='redis://:123456@localhost:6379/1')
@app.task
def add(x,y):
    print("running...",x,y)
    return x+y


代碼片段說明:
broker='redis://localhost‘ :任務(wù)存貯
backend='redis://localhost':任務(wù)結(jié)果存貯

第6步:啟動(dòng)Celery Worker來開始監(jiān)聽并執(zhí)行任務(wù)

注:執(zhí)行啟動(dòng)任務(wù)需進(jìn)入到tasks.py文件所在的目錄下面

說明: 命令行執(zhí)行celery worker -A <app> --loglevel=info時(shí),<app>必須可導(dǎo)入,所以可以為PY模塊或包,但需要注意的不管是包還是模塊都必須正確指定Celery入口文件(如果為包則默認(rèn)的入口文件名為celery.py)的絕對(duì)導(dǎo)入名稱(app/work.app),Celery通過動(dòng)態(tài)導(dǎo)入獲取實(shí)例化后的應(yīng)用,通過實(shí)例化時(shí)指定的配置以及include來依次導(dǎo)入任務(wù)執(zhí)行文件中的任務(wù)指定單元,然后就是等待任務(wù),可以看出Celery是通過相對(duì)/絕對(duì)導(dǎo)入來查找定義的任務(wù)執(zhí)行單元,PY導(dǎo)入成功后會(huì)生成PYC文件,所以代碼修改后一定要先刪除PYC文件.(來源:http://blog.51cto.com/xmdevops/1885857

#cd /data/app/celeryTest/
# celery -A tasks worker --loglevel=info
啟動(dòng)Celery Worker來開始監(jiān)聽并執(zhí)行任務(wù)

**--broker** URL(transport)是我們?cè)赾elery模塊中指定的broker關(guān)鍵字參數(shù)狗超,你也可以通過-b選項(xiàng)在命令行指定一個(gè)不同的broker.


**--concurrency **是用來執(zhí)行任務(wù)而prefork的worker進(jìn)程丝格,如果所有的worker都在執(zhí)行任務(wù)唠梨,那么新添加的任務(wù)必須要等待有一個(gè)正在執(zhí)行的任務(wù)完成后才能被執(zhí)行算芯。
默認(rèn)的concurrency數(shù)量是機(jī)器上CPU的數(shù)量柒昏,你可以指定一個(gè)數(shù)量通過-c選項(xiàng)([celery worker -c](http://docs.celeryproject.org/en/master/reference/celery.bin.worker.html#cmdoption-celery-worker-c) )。在這里沒有推薦值熙揍,因?yàn)樽顑?yōu)值依懶許多因素职祷,但是如果你的任務(wù)大部分都是I/O相關(guān)的,你可以嘗試增加這個(gè)值,實(shí)驗(yàn)證明增加到2倍以上于CPU數(shù)的值對(duì)性能提高微乎其微有梆,相反還會(huì)降低性能是尖。
除了默認(rèn)的進(jìn)程池,Celery還支持使用Eventlet,Gevent和線程(查看 Concurrency


--Events是一個(gè)選項(xiàng)泥耀,它可以用來使Celery在worker中有事件發(fā)生時(shí)發(fā)送監(jiān)控消息(events)饺汹。這些信息可以被一些監(jiān)控程序使用,比如celery events和Flower---一個(gè)實(shí)時(shí)的Celery monitor,更多詳細(xì)介紹可以查看Monitoring and Management guide.


--Queuens是一個(gè)隊(duì)列列表痰催,workers將會(huì)從中消費(fèi)任務(wù)兜辞。可以告訴worker一次性地從多個(gè)隊(duì)列中消費(fèi)任務(wù)夸溶,這可以用來路由消息給指定的worker逸吵。這對(duì)于構(gòu)建高質(zhì)量的服務(wù),關(guān)系的分離和提供優(yōu)先級(jí)都有意義蜘醋。具體的描述參考Routing Guide.

第7步:開啟新的會(huì)話窗口
啟動(dòng)Celery Worker來開始監(jiān)聽并執(zhí)行任務(wù)窗口:
image.png
派發(fā)任務(wù)給Celery Worker窗口:
異步任務(wù)的提交處理
異步任務(wù)的處理過程及結(jié)果
第8步:(非必須)查看任務(wù)結(jié)果

看你的worker終端會(huì)顯示收到 一個(gè)任務(wù)胁塞,此時(shí)你想看任務(wù)結(jié)果的話,需要在調(diào)用 任務(wù)時(shí) 賦值個(gè)變量

>>> result = add.delay(4, 4)

遠(yuǎn)程連接redis查看對(duì)應(yīng)信息:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末压语,一起剝皮案震驚了整個(gè)濱河市啸罢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胎食,老刑警劉巖扰才,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厕怜,居然都是意外死亡衩匣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門粥航,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琅捏,“玉大人,你說我怎么就攤上這事递雀”樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵缀程,是天一觀的道長(zhǎng)搜吧。 經(jīng)常有香客問我,道長(zhǎng)杨凑,這世上最難降的妖魔是什么滤奈? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮撩满,結(jié)果婚禮上蜒程,老公的妹妹穿的比我還像新娘绅你。我一直安慰自己,他們只是感情好搞糕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布勇吊。 她就那樣靜靜地躺著,像睡著了一般窍仰。 火紅的嫁衣襯著肌膚如雪汉规。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天驹吮,我揣著相機(jī)與錄音针史,去河邊找鬼。 笑死碟狞,一個(gè)胖子當(dāng)著我的面吹牛啄枕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播族沃,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼频祝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了脆淹?” 一聲冷哼從身側(cè)響起常空,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盖溺,沒想到半個(gè)月后漓糙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烘嘱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年昆禽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇庭。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡醉鳖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哮内,到底是詐尸還是另有隱情辐棒,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布牍蜂,位于F島的核電站,受9級(jí)特大地震影響泰涂,放射性物質(zhì)發(fā)生泄漏鲫竞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一逼蒙、第九天 我趴在偏房一處隱蔽的房頂上張望从绘。 院中可真熱鬧,春花似錦、人聲如沸僵井。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)批什。三九已至农曲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驻债,已是汗流浹背乳规。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留合呐,地道東北人暮的。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淌实,于是被迫代替她去往敵國(guó)和親冻辩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容