elasticsearch入門系列">elasticsearch入門系列
792
2022-05-30
一、Django自定義命令
Django自定義命令文檔:https://docs.djangoproject.com/zh-hans/2.2/howto/custom-management-commands/
利用django-admin自定義命令我們可以ORM框架對model進行操作,如:定時更新數據庫,檢測數據庫狀態等等。
Django為項目中每一個應用下的management/commands目錄中名字沒有以下劃線開始的Python模塊都注冊了一個manage.py命令,例如:
polls/ __init__.py models.py management/ __init__.py commands/ __init__.py _private.py closepoll.py tests.py views.py
closepoll.py模塊只有一個要求 ,它必須定義一個Command類并擴展自Basecommand或其子類
from django.core.management.base import BaseCommand, CommandError from polls.models import Question as Poll class Command(BaseCommand): help = 'Closes the specified poll for voting' def add_arguments(self, parser): parser.add_argument('poll_ids', nargs='+', type=int) def handle(self, *args, **options): for poll_id in options['poll_ids']: try: poll = Poll.objects.get(pk=poll_id) except Poll.DoesNotExist: raise CommandError('Poll "%s" does not exist' % poll_id) poll.opened = False poll.save() self.stdout.write(self.style.SUCCESS('Successfully closed poll "%s"' % poll_id))
新的自定義命令可以使用python manage.py closepoll 調用。
二、 Django定時任務
下載github地址:https://github.com/kraiz/django-crontab
django-crontab安裝:
pip install django-crontab
只需要將django-crontab加入到settings.py的INSTALLED_APPS即可。如下代碼:
INSTALLED_APPS = ( 'django_crontab', ... )
settings.py中加入django-crontab的命令即可:
CRONJOBS = [ ('47 11 * * *', 'django.core.management.call_command', ['closepoll'],{},'>> /var/run.log'), ]
參數格式:
參數1:定時 例如47 11 * * * 表示每天的11時47分執行
參數2:方法的python模塊路徑,如果執行django-admin命令,則寫django.core.management.call_command
參數3:方法的位置參數列表(默認值:[]),如果執行django-admin命令,則填寫所需執行的命令,例如我們在polls中已經定義過的closepoll
參數4:方法的關鍵字參數的dict(默認值:{})
參數5:執行log存放位置(即重定向到文件,默認:’’)
django-crontab任務加載:
django-crontab任務加載比較簡單,只需要運行 python manage.py crontab add 即可
查看已經激活的任務使用 python manage.py crontab show
刪除已經有的任務使用 python manage.py crontab remove
如果修改了任務記得一定要使用 python manage.py crontab add 這個會更新定時任務
5G教育 Django Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。