这并不能直接回答这个问题,但如果你首先想要实现的只是每(比如)10 分钟运行一次 python 代码,你最好使用cron来实现它。
到目前为止,我假设您有一个脚本,该脚本以某种方式在启动时启动。它主要由一个无限循环、一个主过程和一个wait-until-next-execution-time组件组成。例如像下面这样:
""" my_first_daemon.py
does something everytime the datetime minute part is fully divisible by ten
"""
while True:
# do something at 00,10,20,30,40,50 (minutes) every hour
print "Hello World!"
# wait until the next execution time
wait_until_next_ten_minute_time()
如果确实是这种情况,我建议将脚本的主要部分移至单独的脚本。例如像下面这样:
""" my_first_cronjob.py
is run by cron everytime the datetime minute part is fully divisible by ten
"""
# do something at 00,10,20,30,40,50 (minutes) every hour
print "Hello World!"
您继续添加到您的 crontab(使用该命令crontab -e
将条目添加到该用户的 crontab 中,该条目将运行该脚本,还请查看手册页)。例如像这样:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
# example entry:
# (divide minute-star by 10 to get it run every 10 minutes)
*/10 * * * * python /path/to/my_first_cronjob.py
编辑后,您应该会注意到类似crontab 的消息:安装新的 crontab,然后您就完成了。稍等一下,看看它是否有效。
还有一些需要注意的地方:
- 脚本对 stdout 和 stderr 的输出在终止后通过邮件发送给您。看看
tail -f /var/mail/moooeeeep
(指定您的用户名)。您还可以配置 Thunderbird 来获取这些邮件,以便更轻松地检查它们。
- 相应的Wikipedia 页面是获取更多详细信息的非常好的信息来源。
- 如果您需要在脚本的独立运行之间保留状态信息,请考虑使用配置文件来存储此状态信息,例如,使用pickle、shelve、sqlite等。