摘要:今天介紹在中使用定時任務的兩種方式。添加并啟動定時任務其它命令顯示當前的定時任務刪除所有定時任務今天的定時任務就說到這里,有錯誤之處,歡迎交流指正
今天介紹在django中使用定時任務的兩種方式。
方式一: APScheduler
1)安裝:
pip install apscheduler
2)使用:
from apscheduler.scheduler import Scheduler from django.core.cache import cache # 實例化 sched = Scheduler() # 每30秒執行一次 @sched.interval_schedule(seconds=30) def sched_test(): """ 測試-定時將隨機數保存到redis中 :return: """ seed = "123456789" sa = [] for i in range(4): sa.append(random.choice(seed)) code = "".join(sa) cache.set("test_"+code, code)
3)啟動定時任務
# 啟動定時任務 sched.start()
方式二: django-crontab
1) 安裝:
pip install django-crontab
2) 添加配置到INSTALL_APPS中
INSTALLED_APPS = (
"django_crontab",
)
3) 編寫定時函數:
在django的app中新建一個test_crontab.py文件,把需要定時執行的代碼放進去
import random from django.core.cache import cache def test(): """ 測試-定時將隨機數保存到redis中 :return: """ seed = "123456789" sa = [] for i in range(4): sa.append(random.choice(seed)) code = "".join(sa) cache.set("test_"+code, code)
4)編寫定時命令
Django為項目中每一個應用下的management/commands目錄中名字沒有以下劃線開始的Python模塊都注冊了一個manage.py命令, 自定義一個命令如下: 必須定義一個繼承自BaseCommand的Command類, 并實現handle方法。
編寫appname/management/commands/test.py文件
import random from django.core.management.base import BaseCommand from django.core.cache import cache class Command(BaseCommand): """ 自定義命令 """ def handle(self, *args, **options): """ 自定義命令 :return: """ seed = "123456789" sa = [] for i in range(4): sa.append(random.choice(seed)) code = "".join(sa) cache.set("test_"+code, code)
定義完成后,執行python manage.py test, 會執行handle()函數
5) 在settings.py中增加配置
# 運行定時函數 CRONJOBS = [ ("*/1 * * * *", "appname.test_crontab.test",">>/home/python/test_crontab.log") ] # 運行定時命令 CRONJOBS = [ ("*/1 * * * *", "django.core.management.call_command", ["test"], {}, ">> /home/python/test.log"), ]
上面主要有3個參數,分別表示: 定時任務執行時間(間隔), 待執行定時任務, 將定時任務的信息追加到文件中
對于熟悉linux中定時任務crontab的同學可能對上面第一個參數的語法很親切。上面表示每隔1分鐘執行一次代碼。
linux中的定時任務crontab的語法如下:
* * * * * command 分鐘(0-59) 小時(0-23) 每個月的哪一天(1-31) 月份(1-12) 周幾(0-6) shell腳本或者命令
例子:
0 6 * * * commands >> /tmp/test.log # 每天早上6點執行, 并將信息追加到test.log中 0 */2 * * * commands # 每隔2小時執行一次
有興趣的小伙伴可以深入研究下linux的crontab定時任務。
6) 添加并啟動定時任務
python manage.py crontab add
其它命令:
python manage.py crontab show: 顯示當前的定時任務 python manage.py crontab remove: 刪除所有定時任務
今天的定時任務就說到這里,有錯誤之處,歡迎交流指正!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42510.html
Python中的功能還是相當的多的,比如,會涉及到使用Django定時任務,在工作當中,它的用途是比較的多的,其中,測試工程師用到這種的功能是比較多,所以我們要去進行詳細的了解下,下面就給大家詳細的解答下。 在使用的django做測試平臺時,,多多少少都會遇到需要定時任務的功能,比如定時執行任務,檢查訂單之類的。可能是一段時間,比如每隔10分鐘執行一次,也可能是定點時間,比如14:00執行,...
摘要:在這里的腳本有,部署到預發布生產服務器,清理目錄,壓縮,備份數據庫,在本地,等等。目錄存儲了所有數據庫,,,,等等的配置文件。我使用做所有的排序任務,從發送郵件到從拉取數據。當我第一次開始開發和的時候,我使用,但是已經把所有事情移植進了。 本文原文是 11 Things I Wish I Knew About Django Development Before I Star...
摘要:結論執行完任務不釋放內存與原一直沒有被銷毀有關,因此可以適當配置小點,而任務并發數與配置項有關,每增加一個必然增加內存消耗,同時也影響到一個何時被銷毀,因為是均勻調度任務至每個,因此也不宜配置過大,適當配置。 1.實際使用 ? 監控task的執行結果:任務id,結果,traceback,children,任務狀態 ? 配置 backend=redis://127...
摘要:介紹應用舉例是一個基于開發的分布式異步消息任務隊列,通過它可以輕松的實現任務的異步處理,如果你的業務場景中需要用到異步任務,就可以考慮使用你想對臺機器執行一條批量命令,可能會花很長時間,但你不想讓你的程序等著結果返回,? celery 1.celery介紹 1.1 celery應用舉例 Celery 是一個 基于python開發的分布式異步消息任務隊列,通過...
閱讀 1526·2023-04-26 00:20
閱讀 1121·2023-04-25 21:49
閱讀 803·2021-09-22 15:52
閱讀 577·2021-09-07 10:16
閱讀 972·2021-08-18 10:22
閱讀 2664·2019-08-30 14:07
閱讀 2237·2019-08-30 14:00
閱讀 2651·2019-08-30 13:00