如何定期运行python后台进程

时间:2013-01-30 21:32:11

标签: python unix cron

我有一个相当轻松的脚本,我想每5个小时左右在后台定期运行。该脚本通过几个不同的网站运行,扫描它们以获取新材料,并从中获取.mp3文件或根据其内容在youtube上喜欢歌曲。我想通过这个程序实现一些我不确定如何实现的东西:

  • 让程序每5个小时运行一次 - 我不熟悉系统级的计时操作。
  • 让程序在后台高效运行 - 我希望在用户不知道的情况下进行这些“更新”。
  • 让程序在启动时激活 - 我知道如何将其设置为用户,但我不知道如何将这样的配置添加到python文件中,如果可能的话。请记住,这将是一个简单的.py脚本 - 我没有将其编译成可执行文件。

该程序主要针对OSX和其他基于Unix的系统而设计。关于实现其中一些目标的任何建议?

2 个答案:

答案 0 :(得分:4)

如果您的脚本不需要经常执行,而且听起来不是这样,我建议您设置一个cron作业。

在典型的Linux机上,您可以通过以下方式编辑crontab file

$ crontab -e

这将在您的标准编辑器中打开您的crontab并在完成后为您安装crontab文件(即您保存它)

典型的crontab命令如下所示:

# m h  dom mon dow   command
 15  0   *   *   *    /bin/bash /home/yourself/bin/dump_my_tables.sh

此行将于每天00:15执行dump_my_tables.sh。您的脚本需要如下所示:

0  */5  *  *  *   /usr/bin/python /home/yourself/bin/scrape_the_web.py

注意:

  • 时间是机器的当地时间(!)
  • 某些cron版本不接受*/5语法,您必须手动指定希望安排脚本的小时数,即0,5,10,15,20
  • 您可能希望重定向输出,但它不在此答案范围内

答案 1 :(得分:2)

  

让程序每5个小时运行一次 - 我不熟悉   系统级定时操作。

for nix cron是完成此操作的默认解决方案

  

让程序在后台高效运行 - 我想要这些   “更新”在用户不知情的情况下发生。

使用cron,程序将在服务器的后台运行。用户不应受到它的不利影响。如果用户加载了一个查看mp3的页面,那么你已经抓了。然后在你的脚本中运行/保存数据到数据库,用户点击刷新,新的mp3可能会出现,我不知道这是你所记得的“没有用户知道”

  

让程序在启动时激活 - 我知道如何设置它   作为用户,但我不知道如何添加这样的配置   python文件,如果这是可能的。请记住,这是事实   是一个简单的.py脚本 - 我没有把它编译成可执行文件。

我很确定cron条目会在重启时保持不变(我不是100%),请确保cron守护程序在启动时启动