python celery介紹和基本使用

2022-07-22 06:51:13 字數 3256 閱讀 9731

08 python celery介紹和基本使用

celery分布式任務佇列

rpc遠端,當執行一條命令,等待遠端執行結果返回客戶端。

在linux上可以在後台執行,不影響其他任務執行。(涉及到非同步)

1、分布式任務運算celery

參考:任務計畫:

crontab作業系統本身任務計畫

celery也可以實現定時任務,不需要作業系統。

rabbitmq也可以實現非同步。

2、測試**:

celery在windows上執行有問題,在linux上使用。

[root@backup testcleery]# celery -a celery_test worker -l debug 啟動過程中可能需要調整環境變數。export c_force_root=true

檢視日誌,任務模組載入成功。celery兩個模組都已載入下來。

測試celery模組。

3、測試同時啟動2個worker服務。

[root@backup testcleery]# export c_force_root=true

[root@backup testcleery]# celery -a celery_test worker -l info

[root@backup testcleery]# celery -a celery_test worker -l debug

兩個worker搶任務,隨機分發任務到worker。

多開幾個終端進行測試,應用程式會隨機選擇worker。

4、來個複雜任務,按照生產情況,執行過程很長的服務

10s任務卡住了。

當t1.ready()變成true,可以取值。

5、在專案中使用。指定專案檔案。

專案目錄結構和專案啟動方式。

[root@backup pro]#

生產專案編寫。

[root@backup testcleery]# vim pro/celery.py

from __future__ import absolute_import, unicode_literals 

from celery import celery  # 預設從python絕對路徑引入celery包

配置認為列表項。

啟動celery專案。

[root@backup testcleery]# celery -a pro worker -l debug

[root@backup testcleery]# python

python 3.6.3 |anaconda, inc.| (default, oct 13 2017, 12:02:49)

[gcc 7.2.0] on linux

>>> from pro import tasks, tasks2

>>> t1 = tasks2.cmd('df')

running cmd... df

>>> t1=tasks.xsum.delay([1,2,4,3,2])

>>> t1.get()

celery跟django結合使用的比較多。後面章節重點講解。

celery做定時任務。

後台啟動方式,

[root@backup testcleery]# celery multi start w1 -a pro worker -l info  啟動

[root@backup testcleery]# celery multi stop w1 -a pro worker -l info  關閉

觀察到,乙個worker任務有3個程序在跑。

停止任務

celery multi stopwait w1 -a proj -l info

python celery學習筆記

專案中需要非同步執行某個任務,且失敗的時候需要重試,且需要知道是否執行成功,可以這樣設計。案例 如下 task def test task args,kwargs 處理邏輯 return truedef home request from celery tasks import test task ...

python celery 任務排程器

celery是python開發的分布式任務排程模組,今天抽空看了一下,果然介面簡單,開發容易,5分鐘就寫出了乙個非同步傳送郵件的服務。celery本身不含訊息服務,它使用第三方訊息服務來傳遞任務,目前,celery支援的訊息服務有rabbitmq redis甚至是資料庫,當然redis應該是最佳選擇...

Python celery 任務例項

coding utf 8 celery 任務示例 本地啟動celery命令 python manage.py celery worker settings settings 週期性任務還需要啟動celery排程命令 python manage.py celerybeat settings setti...