成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

分布式任務(wù)框架之celery

fredshare / 919人閱讀

摘要:架構(gòu)消息代理,作為臨時(shí)儲(chǔ)存任務(wù)的中間媒介,為提供了隊(duì)列服務(wù)。生產(chǎn)者將任務(wù)發(fā)送到,消費(fèi)者再?gòu)墨@取任務(wù)。如果使用,則有可能發(fā)生突然斷電之類的問題造成突然終止后的數(shù)據(jù)丟失等后果。任務(wù)調(diào)度器,負(fù)責(zé)調(diào)度并觸發(fā)定時(shí)周期任務(wù)。

架構(gòu)

Broker

消息代理,作為臨時(shí)儲(chǔ)存任務(wù)的中間媒介,為 Celery 提供了隊(duì)列服務(wù)。生產(chǎn)者將任務(wù)發(fā)送到 Broker,消費(fèi)者再?gòu)?Broker 獲取任務(wù)。

Celery目前支持RabbitMQ、Redis、MongoDB、Beanstalk、SQLAlchemy、Zookeeper等 作為消息代理,但適用于生產(chǎn)環(huán)境的只有RabbitMQ和Redis,至于其他的方式,一是支持有限, 二是可能得不到更好的技術(shù)支持。
Celery官方推薦的是RabbitMQ,Celery的作者Ask Solem Hoel最初在VMware就是為RabbitMQ工作的,Celer最初的設(shè)計(jì)就是基于RabbitMQ,所以使用 RabbitMQ會(huì)非常穩(wěn)定,成功案例很多。如果使用Redis,則有可能發(fā)生突然斷電之類的問題 造成Redis突然終止后的數(shù)據(jù)丟失等后果。

Beat

任務(wù)調(diào)度器,負(fù)責(zé)調(diào)度并觸發(fā) Celery 定時(shí)周期任務(wù)。Beat 進(jìn)程讀取 CeleryConfig 中自定義的定時(shí)周期任務(wù)列表,將到期需要執(zhí)行的定時(shí)任務(wù)發(fā)送到任務(wù)隊(duì)列中。

Worker

任務(wù)執(zhí)行單元,實(shí)際負(fù)責(zé)執(zhí)行任務(wù)的服務(wù)進(jìn)程,每一個(gè) Worker 都有一個(gè)并發(fā)池(Prefork/Eventlet/Gevent/Thread)來支持多并發(fā)。Worker 會(huì)監(jiān)聽訂閱的任務(wù)隊(duì)列,當(dāng)隊(duì)列中有任務(wù)時(shí),就會(huì)獲取任務(wù)并執(zhí)行。

Result Backend/Store

任務(wù)執(zhí)行狀態(tài)和結(jié)果存儲(chǔ),Celery 支持任務(wù)實(shí)時(shí)處理,也就是說 Celery 可以把任務(wù)執(zhí)行的實(shí)時(shí)狀態(tài)和最終結(jié)果回傳生產(chǎn)者。這種回傳也需要通過中間存儲(chǔ)媒介。

web監(jiān)控管理 添加管理任務(wù)

任務(wù)的監(jiān)控

celery的魅力

高可用

對(duì)于celery worker來說,其實(shí)部署在多個(gè)節(jié)點(diǎn)上,就是高可用的。

對(duì)于borker來說,我們使用了rabbitmq集群來保證高可用(我們線上同時(shí)也有其他celery服務(wù)使用了AWS的SQS作為borker,其本身就是保證高可用的)。

對(duì)于celerybeat(就是啟動(dòng)定時(shí)任務(wù)的程序)來說,只能使用單節(jié)點(diǎn)啟動(dòng),很難保證高可用,但是我們這邊線上,并沒有使用celerybeat來啟動(dòng)celery定時(shí)任務(wù),而是使用了第三方服務(wù)(AWS lambda)來發(fā)送定時(shí)任務(wù)到celery borker中(相當(dāng)于實(shí)現(xiàn)了celerybeat功能),這樣就用第三方的這個(gè)服務(wù)保證高可用。
其實(shí)除了使用AWS lambda的這種方案,我們還使用了在docker集群中部署celerybeat的方案,這種其實(shí)也是能保證celerybeat的高可用的

參考文獻(xiàn):

Celery+RabbitMQ的多機(jī)器worker節(jié)點(diǎn)介紹

celery有什么難理解的

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42927.html

相關(guān)文章

  • Python爬蟲使用celery加速爬蟲

    摘要:是一個(gè)基于分布式消息傳輸?shù)漠惒饺蝿?wù)隊(duì)列,它專注于實(shí)時(shí)處理,同時(shí)也支持任務(wù)調(diào)度。本文將介紹如何使用來加速爬蟲。本文爬蟲的例子來自文章爬蟲的種姿勢(shì)。雖然沒有這個(gè)爬蟲框架和異步框架來的快,但這也可以作為一種爬蟲的思路。 ??celery是一個(gè)基于分布式消息傳輸?shù)漠惒饺蝿?wù)隊(duì)列,它專注于實(shí)時(shí)處理,同時(shí)也支持任務(wù)調(diào)度。關(guān)于celery的更多介紹及例子,筆者可以參考文章Python之celery的簡(jiǎn)...

    baihe 評(píng)論0 收藏0
  • 基于Celery布式爬蟲管理平臺(tái): Crawlab

    摘要:基于的爬蟲分布式爬蟲管理平臺(tái),支持多種編程語(yǔ)言以及多種爬蟲框架。后臺(tái)程序會(huì)自動(dòng)發(fā)現(xiàn)這些爬蟲項(xiàng)目并儲(chǔ)存到數(shù)據(jù)庫(kù)中。每一個(gè)節(jié)點(diǎn)需要啟動(dòng)應(yīng)用來支持爬蟲部署。任務(wù)將以環(huán)境變量的形式存在于爬蟲任務(wù)運(yùn)行的進(jìn)程中,并以此來關(guān)聯(lián)抓取數(shù)據(jù)。 Crawlab 基于Celery的爬蟲分布式爬蟲管理平臺(tái),支持多種編程語(yǔ)言以及多種爬蟲框架。 Github: https://github.com/tikazyq/...

    legendaryedu 評(píng)論0 收藏0
  • Pythoncelery的簡(jiǎn)介與使用

    摘要:的簡(jiǎn)介是一個(gè)基于分布式消息傳輸?shù)漠惒饺蝿?wù)隊(duì)列,它專注于實(shí)時(shí)處理,同時(shí)也支持任務(wù)調(diào)度。目前支持等作為消息代理,但適用于生產(chǎn)環(huán)境的只有和官方推薦。任務(wù)處理完后保存狀態(tài)信息和結(jié)果,以供查詢。 celery的簡(jiǎn)介 ??celery是一個(gè)基于分布式消息傳輸?shù)漠惒饺蝿?wù)隊(duì)列,它專注于實(shí)時(shí)處理,同時(shí)也支持任務(wù)調(diào)度。它的執(zhí)行單元為任務(wù)(task),利用多線程,如Eventlet,gevent等,它們能被...

    LeexMuller 評(píng)論0 收藏0
  • tornado配合celery及rabbitmq實(shí)現(xiàn)web request異步非阻塞

    摘要:主要是為了實(shí)現(xiàn)系統(tǒng)之間的雙向解耦而實(shí)現(xiàn)的。問題及優(yōu)化隊(duì)列過長(zhǎng)問題使用上述方案的異步非阻塞可能會(huì)依賴于的任務(wù)隊(duì)列長(zhǎng)度,若隊(duì)列中的任務(wù)過多,則可能導(dǎo)致長(zhǎng)時(shí)間等待,降低效率。 Tornado和Celery介紹 1.Tornado Tornado是一個(gè)用python編寫的一個(gè)強(qiáng)大的、可擴(kuò)展的異步HTTP服務(wù)器,同時(shí)也是一個(gè)web開發(fā)框架。tornado是一個(gè)非阻塞式web服務(wù)器,其速度相當(dāng)快。...

    番茄西紅柿 評(píng)論0 收藏0
  • 布式隊(duì)列神器 Celery

    摘要:是什么是一個(gè)由編寫的簡(jiǎn)單靈活可靠的用來處理大量信息的分布式系統(tǒng)它同時(shí)提供操作和維護(hù)分布式系統(tǒng)所需的工具。專注于實(shí)時(shí)任務(wù)處理,支持任務(wù)調(diào)度。說白了,它是一個(gè)分布式隊(duì)列的管理工具,我們可以用提供的接口快速實(shí)現(xiàn)并管理一個(gè)分布式的任務(wù)隊(duì)列。 Celery 是什么? Celery 是一個(gè)由 Python 編寫的簡(jiǎn)單、靈活、可靠的用來處理大量信息的分布式系統(tǒng),它同時(shí)提供操作和維護(hù)分布式系統(tǒng)所需的工...

    趙春朋 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

fredshare

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<