2013-02-07 61 views
0

我有自定義稱道:Django的定製表彰+ cron作業

python manage.py checksomething 

如何運行這每兩個小時?

我看到的Django的cron:

#example from doc 
from django_cron import cronScheduler, Job 

from MyMailFunctions import check_feedback_mailbox 

class CheckMail(Job): 
     # run every 300 seconds (5 minutes) 
     run_every = 300 

     def job(self): 
       # This will be executed every 5 minutes 
       check_feedback_mailbox() 

cronScheduler.register(CheckMail) 

但怎麼辦好呢?它會自動打開?我有在服務器上設置的東西嗎?這個文件應該在哪裏? (在什麼文件夾中?)

+0

哪個系統上你的主機應用程序? –

+0

@LukaszKoziara Linux – mamasi

回答

2

使用crontab,其使用

編輯你的crontab很簡單:

$ crontab -e 

,並添加你的工作:

* */2 * * * python /path/to/project/manage.py checksomething 
+1

如果你正在使用這種方法,那麼如果你的Django被配置爲使用virtualenv(它可能應該是這樣),你需要小心。在這種情況下,我發現讓cronjob運行一個在調用custom management命令之前激活virtualenv的shell腳本是最簡單的。 – Roarster

1

與django_cron的想法是設置一個作業,該作業將在項目中每X秒運行一次。

您創建作業(在您的示例中爲CheckMail函數)並設置其週期(run_every = 300,這意味着每300秒= 5分鐘)。

設置作業後,使用cronScheduler.register(CheckMail)註冊作業。

爲了使工作運行你url.py需要添加以下每5分鐘:

import django_cron 
django_cron.autodiscover() 

這樣做,這將使django_cron活躍,你的工作將開始每5分鐘。

這是一個更好的方法,然後從腳本中調用manage.py checksomthing。這樣你的django項目將在你的django項目中運行自己的工作,並且不會依賴於正在運行的腳本。