我有一个我在工作中使用的python脚本,用于检查网页的内容并向我报告更改。它曾经每5分钟运行一次精确检查网站,然后我们公司切换了一些安全软件。该脚本仍将运行,但会在一小时左右后停止。它不一致,它有时会是几个小时,但大约一个小时似乎平均。 shell中没有报告错误。有没有办法让它自动重启?代码如下,它用于调用函数然后调用sleep命令,但我添加了for循环和打印行以进行调试,以查看它停止的时间。
import time
import datetime
import txtWip
while True:
txtWip.main()
for i in range(1, 300,100):
current_time = time.strftime(r"%d.%m.%Y %H:%M:%S", time.localtime())
print(current_time)
time.sleep(100)
答案 0 :(得分:0)
你想要的是你的程序作为守护进程[1]运行:后台进程不再响应普通的SIGKILL甚至是SIGHUP。您还希望此守护程序在终止时重新启动 - 有效地使其永久运行。
不是编写自己的守护程序脚本,而是更容易执行以下操作之一:
如果在Linux上,请使用Upstart。
这是init.d
守护程序的替代品,它可以在您的计算机运行时监控所有进程。它能够在发生意外崩溃时重新生成流程 - 请参阅an example here和Python-specific example here。它是此平台上此类任务的黄金标准。
对于某些Ubuntu版本,systemd
是浪子,应该使用它。
external bash script的替代方案也不需要弄乱upstart
。
如果在Windows上,请使用ReStartMe
如果在Mac上,请相应地安装和配置runit
[1] 以下不是跨平台建议。您可能需要或可能不需要将其作为a true daemon运行。一个简单的后台作业(即通过在&
到最后运行时附加python <file_name>.py
来调用)应该足够了 - 这将在您退出时运行它的终端时退出,但是你可以绕过这个使用Linux实用程序screen
。