程式開發有時會遇到某些工作需要週期性運行,
在 Django 中也不例外,
今天就來教大家:
Django的排程工具:Django Q
首先必須先安裝 Django 套件:pip install django-q
安裝完畢需要在 Django 專案的 settings.py 找到
INSTALLED_APPS 加上:
'django_q'
接著執行:
python manage.py migrate
選擇要使用的 Brokers,
Brokers 介於 Django 與 Django Q cluster之間,
接受、保存、交付排程工作,
需要在 settings 加上:
Q_CLUSTER = { 'name': 'DjangORM', 'workers': 1, 'timeout': 1800, 'retry': 120, 'queue_limit': 50, 'bulk': 10, 'orm': 'default'}
此處範例使用 Django 資料庫後台作為訊息代理( message broker )
workers:表示使用的 CPU數目,預設為當前 CPU 核心數
timeout:等待工作結束的時間
其餘設定詳細定義請參照官方網站說明
接著執行:
python manage.py qcluster
就能開始排程工作了,
排程工作的方法有兩種:
第一種方法是直接以程式碼方式新增排程工作,
Schedule.objects.create( func='users.views.send_mails_ii', # 填寫要執行的工作 name='send_mail_once',
schedule_type=Schedule.DAILY, # 每天重複執行
repeats=1, # 重複次數,-1代表永不停止 next_run=datetime.datetime.now()
)
第二種方法則是進到 admin 後台直接新增排程工作,
新增方法也很簡單,
前往 Django admin 後台找到 Django Q ,
從 Scheduled tasks 找到 add 按鈕,
在此頁面定義此 Task 名稱,執行的工作,周期性,重複的次數等等,
就能將工作排入等待執行。
不過有兩點要特別注意:
第一點:
不要在 window 下執行 Django Q
第二:
部署到伺服器需要開機就執行:
python manage.py qcluster
方法可參照之前提過開機自動執行程式
沒有留言:
張貼留言