2017-08-04 27 views
0

我在互聯網上搜索了Django中一個預定作業的工作示例。但我只能找到如何去做,但沒有給出任何例子。有人可以共享一個Django框架的工作示例,使用cron運行一個草率的任務嗎?Cron與Django的示例

+0

需要哪些示例?你已經有了制定管理命令的完整說明,而且cron本身也有很好的文檔。你在哪裏遇到麻煩? –

+0

@DanielRoseman在django文檔中講述瞭如何創建自定義命令,但我需要的是在調用「python manage.py runserver」時使計劃任務運行。另外我還發布了其他兩個模塊,我在其相應的官方網站上按照他們的說明進行操作,並且它不會顯式地工作 –

+0

我不明白你在說什麼。調度和runserver之間有什麼聯繫? (完全拋開runserver僅用於開發的事實)。另外,如果您嘗試某些操作時遇到錯誤,則應將其發佈。 –

回答

0

首先,創建一個custom admin command。該命令將用於將任務添加到crontab。這裏是我的自定義命令的例子:

cron.py

from django.core.management.base import BaseCommand, CommandError 
import os 
from crontab import CronTab 

class Command(BaseCommand): 
    help = 'Cron testing' 

    def add_arguments(self, parser): 
     pass 

    def handle(self, *args, **options): 
     #init cron 
     cron = CronTab(user='your_username') 

     #add new cron job 
     job = cron.new(command='python <path_to>/example.py >>/tmp/out.txt 2>&1') 

     #job settings 
     job.minute.every(1) 

     cron.write() 

之後,如果你看一下下面的代碼,一個python腳本將被調用每次1分鐘。創建一個example.py文件並在其中添加您想要每1分鐘創建的功能。

所有準備加入計劃作業,剛剛從項目的Django目錄調用以下命令:

python manage.py cron 

要驗證cron作業已成功添加調用以下命令:

crontab -l 

您應該看到這樣的事情:

* * * * * <path_to>/example.py 

要調試ŧ他example.py,只需調用該命令:

tail -f /tmp/out.txt 
0

計劃任務可以通過celery完成。

芹菜是一個專注於實時處理的任務隊列,同時也支持任務調度。

0

您應該嘗試在使用django應用程序的任何內容的python腳本的開頭添加以下代碼塊。

import sys, os, django 
# append root folder of django project 
# could be solved with a relative path like os.path.abspath(os.path.join(os.path.dirname(__file__), '..') which corresponds to the parent folder of the actual file. 
sys.path.append('/path/to/django-project/') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
django.setup() 

那麼你應該能夠調用這個腳本在一個cronjob像

* * * * * user /path/to/python /path/to/script