重新启动python脚本

重新启动python脚本,python,Python,我有一个从流式API收集数据的脚本。我随机得到一个错误,我相信这是来自twitter端的,无论出于什么原因。它不是在特定的时间发生的,我在运行脚本10分钟后就看到了它,其他时间是在2小时后 我的问题是如何创建另一个脚本(在运行脚本之外),该脚本可以捕获因错误终止的脚本,然后在延迟后重新启动 我做了一些搜索,大部分都与在linux上使用bash有关,我在windows上。其他建议是使用Windows任务调度程序,但只能在已知时间内设置 我遇到了以下代码: import os, sys, time

我有一个从流式API收集数据的脚本。我随机得到一个错误,我相信这是来自twitter端的,无论出于什么原因。它不是在特定的时间发生的,我在运行脚本10分钟后就看到了它,其他时间是在2小时后

我的问题是如何创建另一个脚本(在运行脚本之外),该脚本可以捕获因错误终止的脚本,然后在延迟后重新启动

我做了一些搜索,大部分都与在linux上使用bash有关,我在windows上。其他建议是使用Windows任务调度程序,但只能在已知时间内设置

我遇到了以下代码:

import os, sys, time

def main():  
    print "AutoRes is starting"
    executable = sys.executable
    args = sys.argv[:]
    args.insert(0, sys.executable)

    time.sleep(1)
    print "Respawning"
    os.execvp(executable, args)

if __name__ == "__main__":  
    main()
如果我没弄错的话,代码里面运行的是正确的吗?问题是我的脚本当前正在收集数据,无法终止编辑。

这如何

from os import system
from time import sleep

while True: #manually terminate when you want to stop streaming
    system('python streamer.py')
    sleep(300) #sleep for 5 minutes
同时,当
streamer.py中出现问题时,通过调用
sys.exit(1)


确保此文件和
streamer.py
文件位于同一目录中。

您能检测到脚本何时出错吗?此时,您可以抛出一个异常。。。。永远使用?我确实有一个异常,但它没有捕获该错误,它在我从API接收到数据后捕获错误并为此工作。这就是为什么我认为这可能是我和twitter之间的连接问题。@Leb但总的来说,你能告诉我你的脚本什么时候出错吗?此时,请调用
sys.exit(1)
@JuanPablo我需要一个延迟,否则twitter不会喜欢它。@Leb这是一个单独的“控制器”脚本。根据
streamer.py
的具体操作,您可能会得到多个streamer.py实例。另外,您可能需要等待5分钟才能处理错误的
streamer.py
@moose这怎么可能?@moose不是调用
系统
阻塞?@RishavKundu我在另一个脚本上做了一次模拟运行,结果成功了。我不能在我的主服务器上使用它,因为它将创建另一个连接。一旦当前一个终止,我将运行它并进行更新。