Django自動注冊tasks及使用方式
注冊定時任務使用
最近,利用 Django + dramatiq + apscheduler 實現(xiàn)了異步消息隊列功能,能夠在Django應用中,方便的注冊定時任務。
使用方式如下:
# app/tasks.py
import dramatiq
from sigma_tools import cron
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
# │ │ │ │ │
# * * * * *
@cron("*/1 * * * *")
@dramatiq.actor
def some_task():
print("每分鐘都會執(zhí)行這個任務")
開發(fā)的過程中,遇到一個問題,就是自己定義的定時任務存在tasks.py文件中,如果不在Django工程中引入這個文件,該定時任務將不會被注冊。
一個辦法是在每一個app的 __init__.py 文件中,顯式的引入其 tasks.py 模塊。由于Django會自動注冊app,注冊的同時,也就會發(fā)現(xiàn)__init__.py 文件中的tasks模塊了。
但這個方法太土了,而且每個app都需要做一遍這個重復的工作,不夠優(yōu)雅。
優(yōu)雅的方式,是在注冊調度器時,自動發(fā)現(xiàn)并注冊所有的tasks模塊,代碼如下:
from django.apps import apps
for app in apps.get_app_configs():
try:
__import__(f'{app.name}.tasks')
except ImportError:
pass
這樣,開發(fā)時,只管聲明tasks即可.
以上就是Django自動注冊tasks及使用方式的詳細內(nèi)容,更多關于Django自動注冊tasks的資料請關注腳本之家其它相關文章!
相關文章
開源軟件包和環(huán)境管理系統(tǒng)Anaconda的安裝使用
Anaconda是一個用于科學計算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。2017-09-09
基于Tensorflow批量數(shù)據(jù)的輸入實現(xiàn)方式
今天小編就為大家分享一篇基于Tensorflow批量數(shù)據(jù)的輸入實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
解決Pytorch中Batch Normalization layer踩過的坑
這篇文章主要介紹了解決Pytorch中Batch Normalization layer踩過的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
virtualenv實現(xiàn)多個版本Python共存
virtualenv用于創(chuàng)建獨立的Python環(huán)境,多個Python相互獨立,互不影響,它能夠:1. 在沒有權限的情況下安裝新套件 2. 不同應用可以使用不同的套件版本 3. 套件升級不影響其他應用2017-08-08
python點云地面點濾波(Progressive Morphological Filter)算法介紹(PCL庫)
這篇文章主要介紹了python點云地面點濾波(Progressive Morphological Filter)算法介紹(PCL庫),了解膨脹/腐蝕這兩個基礎操作,可以通過對其進行簡單組合來形成開/閉操作,需要的朋友可以參考下2021-08-08

