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...