celery
是乙個基於分布式訊息傳輸的非同步任務佇列,它專注於實時處理,同時也支援任務排程。在之前的文章python之celery的簡介與使用中,筆者簡單介紹了celery以及celery的使用。本文將會將會如何利用celery來實現定時任務。
定時任務,在我們平時的工作中並不少見,比如定時備份資料庫,清理日誌,以及對資料定時做統計等。
本文將會結合兩個定時任務來進行講解,這兩個定時任務為:
整個專案的演示**很簡單,如下:
broker_url = 'redis://localhost' # 使用redis作為訊息**
celery_result_backend = 'redis://localhost:6379/0' # 把任務結果存在了redis
celery_task_serializer = 'msgpack' # 任務序列化和反序列化使用msgpack方案
celery_result_serializer = 'json' # 讀取任務結果一般效能要求不高,所以使用了可讀性更好的json
celery_task_result_expires = 60 * 60 * 24 # 任務過期時間,不建議直接寫86400,應該讓這樣的magic數字表述更明顯
celery_accept_content = ['json', 'msgpack'] # 指定接受的內容型別
celeryd_concurrency = 10 # 併發worker數
tasks.py
為具體的任務情況,這裡只配置了上述兩個任務,**如下:
從上述的**中,我們可以看出,celery的定時任務實現方式應該借助了linux中crontab的實現機制。在具體的配置中,需要指定任務的名稱(比如:each10s_task
),任務的實現函式(比如:proj.tasks.add
)以及定時時間和函式引數(非必須)。關於定時的schedule模式,可以參考**: 。
接下來,我們來模擬該定時任務的執行。
首先,需要啟動訊息佇列,這裡選擇redis
。接著,執行任務排程的命令,如下:
輸出如下:
接著執行celery的定時任務,輸出結果如下:
執行結果
如果我們想在網頁中視覺化地檢視celery的實時監控情況,可以再輸入命令(事先安裝flower
):
在網頁中輸入localhost:5555,可以看到worker的運**況,如下:
celery 視覺化 Celery 最佳實踐
1.用好celery beat 如果你想更好的管理專案的定時任務,可以用celery beat代替crontab管理。celery不僅支援動態的非同步任務 通過delay呼叫 也支援定時任務執行。當然我們可以用crontab實現任務的定時執行,但是crontab是與專案 隔離的,為了更方便地管理定時...
利用PCA視覺化異常點
異常點往往是由於某乙個特徵或者多個特徵數值異常。但是對於多維度特徵無法直接進行視覺化觀測異常點,利用pca技術進行維度縮減,可以在二維或者三維空間上進行視覺化展示。原資料如下 pcapca pca n components 2 壓縮到二維空間中 x pca pca.fit transform df ...
利用Matlab將mnist資料視覺化
matlab show mnist data.m,可以放在 caffe root data mnist 下,或者其他包含mnist資料檔案的目錄下執行 matlab clear clc close all image file name t10k images idx3 ubyte index fi...