如何理解celery中的worker并發(fā)和多worker

我把在v2上發(fā)的帖子下面的評(píng)論摘抄下來
原帖:https://www.v2ex.com/t/593748#r_7793688

兩個(gè)說的比較詳細(xì)的回答:
回答1:
一個(gè)工廠(worker)有一個(gè)員工(單進(jìn)(線)程),為了提高效率漾脂,請(qǐng)多了幾個(gè)員工一起工作(單 worker 多進(jìn)程)
為了防止這個(gè)工廠斷電無法工作能颁,那么多建了幾個(gè)工廠,每個(gè)工廠有多個(gè)員工(多 worker 多進(jìn)程)


實(shí)際上都是在實(shí)現(xiàn)并發(fā)

單 worker 可以開 n 個(gè)進(jìn)程進(jìn)行工作旁涤,一個(gè) worker 掛了往往所有進(jìn)程都會(huì)掛掉
多 worker 假設(shè)為 m 個(gè),可以理解為分布式迫像,為了防止一個(gè) worker 掛了(或者性能不足等原因)劈愚,導(dǎo)致無法工作
那么能夠并發(fā)處理的任務(wù)數(shù)量理論上為 m * n

一般 worker(不僅 celery,很多設(shè)計(jì)都是這樣)指一個(gè)調(diào)度主進(jìn)程 + 多個(gè)子工作進(jìn)程

一個(gè) worker 有什么缺點(diǎn):

  1. 如果這個(gè) worker 的主進(jìn)程掛了,那么整個(gè)任務(wù)系統(tǒng)都崩了闻妓。
  2. 再往深點(diǎn)菌羽,如果你服務(wù)端 master 發(fā)送的任務(wù)速度很快,遠(yuǎn)大于 worker 主進(jìn)程去分發(fā)任務(wù)的速度由缆,可能會(huì)影響效率(但這種情況很少注祖,而且這種框架一般都是容忍延遲的)
  3. 部署 worker 這臺(tái)機(jī)器掛了,那么你的任務(wù)系統(tǒng)都崩了
  4. 這臺(tái)機(jī)器的資源(cpu均唉,內(nèi)存是晨,IO 等)無法滿足你的需求

比較常見的是在不同機(jī)器部署多個(gè) worker
在不考慮機(jī)器和進(jìn)程掛掉但情況,其實(shí)一個(gè) worker 開 8 個(gè)進(jìn)程和 2 個(gè) worker 每個(gè)開 4 個(gè)進(jìn)程的效率是接近的

回答2:
celery 里面的-c 參數(shù)指定的是并發(fā)度舔箭,而-P 參數(shù)指定并發(fā)的實(shí)現(xiàn)方式署鸡,有 prefork (default)、eventlet限嫌、gevent 等靴庆,prefork 就是多進(jìn)程的方式去實(shí)現(xiàn)并發(fā)。
你理解的多 worker 對(duì)應(yīng)到多個(gè)進(jìn)程怒医,每個(gè) worker (進(jìn)程)自己內(nèi)部還能并發(fā)是 gunicorn 的方式炉抒。gunicorn 的-w 參數(shù)指定有幾個(gè) worker (即幾個(gè)進(jìn)程),-k 參數(shù)指定每個(gè) worker 的并發(fā)方式稚叹,可以是多線程或者多協(xié)程焰薄,也可以指定為 sync拿诸,表示 worker 是同步的,即不能并發(fā)塞茅。
比如 gunicorn 的-w 10 -k sync 和 celery 的-c 10 -P prefork 是等價(jià)的亩码,都是創(chuàng)建 10 個(gè)進(jìn)程去做并發(fā),并發(fā)度最高就是 10野瘦。

再例如 celery 的-c 10 -P gevent 表示創(chuàng)建 10 個(gè) gevent 協(xié)程去做并發(fā)描沟,最高并發(fā)度也是 10。而 gunicorn 的-w 10 -k gevent鞭光,表示的是創(chuàng)建 10 個(gè)進(jìn)程吏廉,且每個(gè)進(jìn)程都是 gevent 異步的,這個(gè)并發(fā)度就很高了惰许。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末席覆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汹买,更是在濱河造成了極大的恐慌佩伤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晦毙,死亡現(xiàn)場(chǎng)離奇詭異生巡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)结序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門障斋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵潦,“玉大人徐鹤,你說我怎么就攤上這事⊙悖” “怎么了返敬?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)寥院。 經(jīng)常有香客問我劲赠,道長(zhǎng),這世上最難降的妖魔是什么秸谢? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任凛澎,我火速辦了婚禮,結(jié)果婚禮上估蹄,老公的妹妹穿的比我還像新娘塑煎。我一直安慰自己,他們只是感情好臭蚁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布最铁。 她就那樣靜靜地躺著讯赏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冷尉。 梳的紋絲不亂的頭發(fā)上漱挎,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音雀哨,去河邊找鬼磕谅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛震束,可吹牛的內(nèi)容都是我干的怜庸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼垢村,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼割疾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘉栓,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宏榕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后侵佃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麻昼,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年馋辈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抚芦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迈螟,死狀恐怖叉抡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情答毫,我是刑警寧澤褥民,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站洗搂,受9級(jí)特大地震影響消返,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耘拇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一撵颊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惫叛,春花似錦倡勇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亲桥。三九已至,卻和暖如春固耘,著一層夾襖步出監(jiān)牢的瞬間题篷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工厅目, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留番枚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓损敷,卻偏偏與公主長(zhǎng)得像葫笼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拗馒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • Celery 進(jìn)階 前面已經(jīng)對(duì)Celery的簡(jiǎn)單使用和配置做了介紹诱桂,本章將會(huì)展示Celery的更多細(xì)節(jié) 在自己的應(yīng)...
    0ooops閱讀 5,797評(píng)論 0 7
  • celery是簡(jiǎn)單的處理大量消息的分布式系統(tǒng)洋丐。可以用celery異步處理各種任務(wù)挥等,并且支持水平地?cái)U(kuò)展處理能力友绝。在運(yùn)...
    Devops_cheers閱讀 5,583評(píng)論 0 2
  • 許多Django應(yīng)用需要執(zhí)行異步任務(wù), 以便不耽誤http request的執(zhí)行. 我們也可以選擇許多方法來完成異...
    青峰星宇閱讀 23,009評(píng)論 0 52
  • 一. celery 簡(jiǎn)介 Celery 是一個(gè)專注于實(shí)時(shí)處理和任務(wù)調(diào)度的分布式任務(wù)隊(duì)列, 同時(shí)提供操作和維護(hù)分布式...
    dinel閱讀 5,927評(píng)論 0 2