2013-01-13 35 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/。