django-q快速上手定時任務

概述

網上關於django-q的內容很少,連配置文檔都沒有,這裏寫一篇入門文檔,一起學習。我個人感覺,django-q簡直吊打celery。在定時任務上面,設置非常簡單,也不會遇到一些奇奇怪怪的問題。
注意:這裏面對要調用的函數,使用的是字符串的方式,最開始我對這個很疑惑,不過後來才發現這樣更方便,徹底將要執行的任務函數和這個任務機制解綁,不像celery,不註冊就沒法使用。

環境搭建

注意:如果使用python3.6,請不要使用django 3.x,要用django2.x,
建議使用python3.7
另,我再windows上沒有成功運行,原因未知。

安裝

使用pip進行安裝

pip install django-q

在項目settings.py中將django_q添加到INSTALLED_APPS:

INSTALLED_APPS =(
    # 其他應用
    'django_q',
)

運行Django遷移以創建數據庫表:

python manage.py migrate

組態

選擇一個消息代理並配置。
這裏以redis爲例:
安裝redis需要的環境:

sudo apt install redis-server
pip3 install redis
pip3 install django-redis

注意:這裏有一個問題,redis不支持消息回執。如果對你的需求有影響建議更換消息代理。

配置settings.py文件

# settings.py示例
Q_CLUSTER = {
    'name': 'myproject',#項目名稱
   'workers': 4,  #worker數。默認爲當前主機的CPU計數,
    'recycle': 500,  # worker在回收之前要處理的任務數。有助於定期釋放內存資源。默認爲500。
    'timeout': 60,  # 任務超時設置,如果是爬蟲任務建議設置長一些
    'compress': True,  # 數據壓縮
    'save_limit': 250,  # 限制保存到Django的成功任務的數量。0爲無限,-1則不會保存
    'queue_limit': 500,  # 排隊的任務數量,默認爲workers**2。
    'cpu_affinity': 1,  # 設置每個工作人員可以使用的處理器數量。根據經驗; cpu_affinity 1支持重複的短期運行任務,而沒有親和力則有利於長時間運行的任務。
     'label': 'Django Q',  # 用於Django Admin頁面的標籤。默認爲'Django Q',之後我會根據源碼做一箇中文版的django-admin頁面。如果有需求請私信我
    'redis': {#如果配置了redis緩存,可以使用django的設置,請參考官方文檔。
        'host': '127.0.0.1',
        'port': 6379,
        'db': 0, }
}

啓動

先啓動qcluster

python manage.py qcluster

再啓動django,
如果要監視集羣:

$ python manage.py qmonitor

使用以下方法檢查總體統計信息:

python manage.py qinfo

如果到這裏能夠正常運行,恭喜你,已經完成一半了。

通過頁面的方式添加任務

tasks.py

在app下創建tasks.py,該文件主要是存儲需要調用的一些方法。舉例如下:

# tasks.py
def add(a,b)
    return a+b

假定這個app名字叫dj_q_test,那麼,在頁面可以這麼創建定時任務:
在這裏插入圖片描述
進去之後,這麼輸入參數:
在這裏插入圖片描述
設置運行時間:
在這裏插入圖片描述
點擊保存之後,在這裏查看就ok:
在這裏插入圖片描述
如果想要在代碼裏面執行,同樣很簡單。

發佈了50 篇原創文章 · 獲贊 15 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章