python之celery介紹,python celery應用場景

本文目錄一覽:

twisted,celery有何區別

一,英語語言角度:二者詞性,詞義,都相去甚遠

twisted

twist的過去式和過去分詞形式,可單獨作形容詞,意為:擰的;古怪的

celery

名詞

蔬菜類,我們常見的

西芹

芹菜

或(調味用)

香芹粉

二,計算機語言角度

Celery

(芹菜)是基於Python開發的分佈式任務調度模塊。它支持使用任務隊列的方式在分佈的機器/進程/線程上執行任務調度。它不僅專註於實時操作,還支持計劃性任務調度。

Twisted是用Python實現的基於事件驅動的網絡引擎框架。它支持許多常見的傳輸及應用層協議,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。

二者的交集是:Python語言

二者不同是:Celery是任務調度模塊,Twisted是網絡編程框架

celery是python寫的還是c寫的

Celery is written in Python, but the protocol can be implemented in any language. In addition to Python there’s node-celeryfor Node.js, and a PHP client.

這是摘自celery在githup上的原話,翻譯過來就是:Celery使用python寫的,但是該協議可以被任何語言實現,除了python,還有Node.js的node-celery和php的客戶端

Python 異步任務隊列Celery 使用

在 Python 中定義 Celery 的時候,我們要引入 Broker,中文翻譯過來就是「中間人」的意思。在工頭(生產者)提出任務的時候,把所有的任務放到 Broker 裏面,在 Broker 的另外一頭,一群碼農(消費者)等着取出一個個任務準備着手做。這種模式註定了整個系統會是個開環系統,工頭對於碼農們把任務做的怎樣是不知情的。所以我們要引入 Backend 來保存每次任務的結果。這個 Backend 也是存儲任務的信息用的,只不過這裡存的是那些任務的返回結果。我們可以選擇只讓錯誤執行的任務返回結果到 Backend,這樣我們取回結果,便可以知道有多少任務執行失敗了。

其實現架構如下圖所示:

可以看到,Celery 主要包含以下幾個模塊:

celery可以通過pip自動安裝。

broker 可選擇使用RabbitMQ/redis,backend可選擇使用RabbitMQ/redis/MongoDB。RabbitMQ/redis/mongoDB的安裝請參考對應的官方文檔。

——————————rabbitmq相關———————————————————-

官網安裝方法:

啟動管理插件:sbin/rabbitmq-plugins enable rabbitmq_management 啟動rabbitmq:sbin/rabbitmq-server -detached

rabbitmq已經啟動,可以打開頁面來看看 地址:

用戶名密碼都是guest 。進入可以看到具體頁面。 關於rabbitmq的配置,網上很多 自己去搜以下就ok了。

——————————rabbitmq相關——————————————————–

項目結構如下:

使用前,需要三個方面:celery配置,celery實例,需執行的任務函數,如下:

Celery 的配置比較多,可以在 官方配置文檔: 查詢每個配置項的含義。

當然,要保證上述異步任務and下述定時任務都能正常執行,就需要先啟動celery worker,啟動命令行如下:

需 啟動beat ,執行定時任務時, Celery會通過celery beat進程來完成。Celery beat會保持運行, 一旦到了某一定時任務需要執行時, Celery beat便將其加入到queue中. 不像worker進程, Celery beat只需要一個即可。而且為了避免有重複的任務被發送出去,所以Celery beat僅能有一個。

命令行啟動:

如果你想將celery worker/beat要放到後台運行,推薦可以扔給supervisor。

supervisor.conf如下:

python 使用celery為了解決什麼業務問題

Celery是一個專註於實時處理和任務調度的分佈式任務隊列。所謂任務就是消息,消息中的有效載荷中包含要執行任務需要的全部數據。

使用Celery的常見場景如下:

1. Web應用。當用戶觸發的一個操作需要較長時間才能執行完成時,可以把它作為任務交給Celery去異步執行,執行完再返回給用戶。這段時間用戶不需要等待,提高了網站的整體吞吐量和響應時間。

2. 定時任務。生產環境經常會跑一些定時任務。假如你有上千台的服務器、上千種任務,定時任務的管理很困難,Celery可以幫助我們快速在不同的機器設定不同種任務。

3. 同步完成的附加工作都可以異步完成。比如發送短訊/郵件、推送消息、清理/設置緩存等。

Celery還提供了如下的特性:

1. 方便地查看定時任務的執行情況,比如執行是否成功、當前狀態、執行任務花費的時間等。

2. 可以使用功能齊備的管理後台或者命令行添加、更新、刪除任務。

3. 方便把任務和配置管理相關聯。

4. 可選多進程、Eventlet和Gevent三種模式並發執行。

5. 提供錯誤處理機制。

– 提供多種任務原語,方便實現任務分組、拆分和調用鏈。

– 支持多種消息代理和存儲後端。

Django配置Celery執行異步和同步任務(tasks))

celery是一個基於python開發的簡單、靈活且可靠的分佈式任務隊列框架,支持使用任務隊列的方式在分佈式的機器/進程/線程上執行任務調度。採用典型的生產者-消費者模型,主要由三部分組成:

比如系統上線前後台批量導入歷史數據,發送短訊、發送郵件等耗時的任務

1.安裝RabbitMQ,這裡我們使用RabbitMQ作為broker,安裝完成後默認啟動了,也不需要其他任何配置

Ubuntu linux安裝

CentOS Linux 安裝

蘋果mac 安裝需要配置

配置環境變量 (蘋果用戶)

啟動rabbitmq-server

2.安裝celery

3.celery用在django項目中,django項目目錄結構(簡化)如下

4.創建 oa/celery.py 主文件

5.在 oa/__init__.py 文件中增加如下內容,確保django啟動的時候這個app能夠被加載到

6.各應用創建tasks.py文件,這裡為 users/tasks.py

7.views.py中引用使用這個tasks異步處理

8.啟動celery

9.這樣在調用post這個方法時,裡邊的add就可以異步處理了

定時任務的使用場景就很普遍了,比如我需要定時發送報告給老闆~

1. oa/celery.py 文件添加如下配置以支持定時任務crontab

3.啟動celery beat,celery啟動了一個beat進程一直在不斷的判斷是否有任務需要執行

python celery 怎麼配置到集群

Celery是一個基於Python的分佈式並行處理框架,通過消息總線進行任務調度,非常靈活。

它有輸入和輸出通道,通過輸入通道連接到broker(如AMQP服務Channel)或者通過輸出通道連接到結果的backend(用於獲取結果,不是必須的,因為有的操作只是單向分發任務)。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/248124.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:25
下一篇 2024-12-12 13:25

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論