2013-01-13 55 views
2

我是Django,Python和Web Development的新手,並且正在嘗試將RSS閱讀器作爲一個學習項目。現在,我需要幫助實施定期檢查所有頻道以獲取新內容的部分(如每15分鐘說一次)。我需要一個cron工作,並且自定義管理命令是解決這個問題的方法,我非常瞭解這一點。但我正在努力弄清楚如何實現這一點。 This鏈接是大多數人在SO上推薦的內容,但我沒有發現它很有幫助,例如,我沒有解釋有關X時間部分的調度。Django cron提取RSS

有人可以通過代碼解釋如何實施每15分鐘對新內容的頻道進行檢查。提前致謝。

回答

2

「每15分鐘」位實際上是最容易的。一旦你寫了命令一次,你設置了cron來每15分鐘執行一次命令。

This article概括地介紹了一般的cron以及如何設置它。

事物運行的cron時要記住:

  1. 的Cron進程下自己的shell中運行(通常/bin/sh),因此沒有獲得所有自定義(如東西,你已經添加到您的PATH)。
  2. 這也意味着您需要將完整路徑提供給您需要運行的任何可執行文件。例如,請勿輸入python,而是鍵入/usr/bin/python或適用於您的系統的任何內容。
  3. cron任務的結果通常會通過電子郵件發送到您的系統用戶帳戶。您可以通過安裝郵件閱讀器來檢查這些郵件。 mutt是我最喜歡的控制檯電子郵件閱讀器。如果您想將cron結果重定向到您的電子郵件,您可以在您的cron文件中設置變量MAILTO
  4. 另外,請記住,像source命令這樣的常見bashisms在cron中不起作用。

一旦你寫好管理命令,只需將其添加到您自己的crontab文件中即可。該文件列出了系統級cron進程將執行的所有命令。

要編輯您的crontab文件,請從控制檯輸入crontab -e

文件中不是註釋的每一行都是一個條目。條目從頻率開始,然後運行命令。這裏是一般格式:

* * * * * command to be executed 
┬ ┬ ┬ ┬ ┬ 
│ │ │ │ │ 
│ │ │ │ │ 
│ │ │ │ └───── day of week (0 - 7) (0 or 7 are Sunday, or use names) 
│ │ │ └────────── month (1 - 12) 
│ │ └─────────────── day of month (1 - 31) 
│ └──────────────────── hour (0 - 23) 
└───────────────────────── min (0 - 59) 

在任何位置的星號*的意思是「全部」。

要運行的東西,每15分鐘:

0/15**** /usr/bin/python /home/myuser/project/manage.py foo 
0

只是爲了將來裁判這一點,頻率PARAMS用空格分開(也許他們已經失去了在發佈)。嘗試各種組合的好地方是www.dataphyx.com/cronsandbox/。