摘要:架構消息代理,作為臨時儲存任務的中間媒介,為提供了隊列服務。生產者將任務發送到,消費者再從獲取任務。如果使用,則有可能發生突然斷電之類的問題造成突然終止后的數據丟失等后果。任務調度器,負責調度并觸發定時周期任務。
架構
Broker
消息代理,作為臨時儲存任務的中間媒介,為 Celery 提供了隊列服務。生產者將任務發送到 Broker,消費者再從 Broker 獲取任務。
Celery目前支持RabbitMQ、Redis、MongoDB、Beanstalk、SQLAlchemy、Zookeeper等 作為消息代理,但適用于生產環境的只有RabbitMQ和Redis,至于其他的方式,一是支持有限, 二是可能得不到更好的技術支持。
Celery官方推薦的是RabbitMQ,Celery的作者Ask Solem Hoel最初在VMware就是為RabbitMQ工作的,Celer最初的設計就是基于RabbitMQ,所以使用 RabbitMQ會非常穩定,成功案例很多。如果使用Redis,則有可能發生突然斷電之類的問題 造成Redis突然終止后的數據丟失等后果。
Beat
任務調度器,負責調度并觸發 Celery 定時周期任務。Beat 進程讀取 CeleryConfig 中自定義的定時周期任務列表,將到期需要執行的定時任務發送到任務隊列中。
Worker
任務執行單元,實際負責執行任務的服務進程,每一個 Worker 都有一個并發池(Prefork/Eventlet/Gevent/Thread)來支持多并發。Worker 會監聽訂閱的任務隊列,當隊列中有任務時,就會獲取任務并執行。
Result Backend/Store
任務執行狀態和結果存儲,Celery 支持任務實時處理,也就是說 Celery 可以把任務執行的實時狀態和最終結果回傳生產者。這種回傳也需要通過中間存儲媒介。
web監控管理 添加管理任務 任務的監控 celery的魅力高可用
對于celery worker來說,其實部署在多個節點上,就是高可用的。
對于borker來說,我們使用了rabbitmq集群來保證高可用(我們線上同時也有其他celery服務使用了AWS的SQS作為borker,其本身就是保證高可用的)。
對于celerybeat(就是啟動定時任務的程序)來說,只能使用單節點啟動,很難保證高可用,但是我們這邊線上,并沒有使用celerybeat來啟動celery定時任務,而是使用了第三方服務(AWS lambda)來發送定時任務到celery borker中(相當于實現了celerybeat功能),這樣就用第三方的這個服務保證高可用。
其實除了使用AWS lambda的這種方案,我們還使用了在docker集群中部署celerybeat的方案,這種其實也是能保證celerybeat的高可用的
Celery+RabbitMQ的多機器worker節點介紹
celery有什么難理解的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42927.html
摘要:是一個基于分布式消息傳輸的異步任務隊列,它專注于實時處理,同時也支持任務調度。本文將介紹如何使用來加速爬蟲。本文爬蟲的例子來自文章爬蟲的種姿勢。雖然沒有這個爬蟲框架和異步框架來的快,但這也可以作為一種爬蟲的思路。 ??celery是一個基于分布式消息傳輸的異步任務隊列,它專注于實時處理,同時也支持任務調度。關于celery的更多介紹及例子,筆者可以參考文章Python之celery的簡...
摘要:基于的爬蟲分布式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。后臺程序會自動發現這些爬蟲項目并儲存到數據庫中。每一個節點需要啟動應用來支持爬蟲部署。任務將以環境變量的形式存在于爬蟲任務運行的進程中,并以此來關聯抓取數據。 Crawlab 基于Celery的爬蟲分布式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。 Github: https://github.com/tikazyq/...
摘要:的簡介是一個基于分布式消息傳輸的異步任務隊列,它專注于實時處理,同時也支持任務調度。目前支持等作為消息代理,但適用于生產環境的只有和官方推薦。任務處理完后保存狀態信息和結果,以供查詢。 celery的簡介 ??celery是一個基于分布式消息傳輸的異步任務隊列,它專注于實時處理,同時也支持任務調度。它的執行單元為任務(task),利用多線程,如Eventlet,gevent等,它們能被...
摘要:主要是為了實現系統之間的雙向解耦而實現的。問題及優化隊列過長問題使用上述方案的異步非阻塞可能會依賴于的任務隊列長度,若隊列中的任務過多,則可能導致長時間等待,降低效率。 Tornado和Celery介紹 1.Tornado Tornado是一個用python編寫的一個強大的、可擴展的異步HTTP服務器,同時也是一個web開發框架。tornado是一個非阻塞式web服務器,其速度相當快。...
摘要:是什么是一個由編寫的簡單靈活可靠的用來處理大量信息的分布式系統它同時提供操作和維護分布式系統所需的工具。專注于實時任務處理,支持任務調度。說白了,它是一個分布式隊列的管理工具,我們可以用提供的接口快速實現并管理一個分布式的任務隊列。 Celery 是什么? Celery 是一個由 Python 編寫的簡單、靈活、可靠的用來處理大量信息的分布式系統,它同時提供操作和維護分布式系統所需的工...
閱讀 1854·2023-04-25 23:28
閱讀 563·2023-04-25 22:49
閱讀 2241·2021-09-27 13:34
閱讀 5158·2021-09-22 15:09
閱讀 3609·2019-08-30 12:52
閱讀 2740·2019-08-29 15:26
閱讀 659·2019-08-29 11:12
閱讀 2190·2019-08-26 12:24