celery 視覺化 利用Celery實現定時任務

2021-10-13 23:23:58 字數 1554 閱讀 3931

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