在睡眠期间安全地重启python程序?

时间:2016-05-21 22:24:21

标签: python restart

我有一个需要全天候运行的python程序。它以30秒的间隔大约10%的时间睡着了。有没有办法让程序停止并安全地再次启动,以便重启仅在睡眠期间?

以下是代码示例,main()函数和实现:

# =============================================================================
# MAIN
# =============================================================================

def main():
    while True:
        checkReply = Reply()
        checkReply.time_to_reply()
        checkReply.search_db()
        time.sleep(10)


# =============================================================================
# RUNNER
# =============================================================================
print "start"
if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:2)

一种方法是将main()更改为:

def main():
    restart_file = config.get('some_section', 'restart_file')
    while True:
        checkReply = Reply()
        checkReply.time_to_reply()
        checkReply.search_db()
        time.sleep(10)
        if os.path.exists(restart_file):
            os.unlink(restart_file)
            if 0 == os.fork():
                os.execl(shlex.split('command to run the updated program'))
            sys.exit('restarting')

为了增加信用,请使用类似https://pypi.python.org/pypi/python-daemon/之类的东西,让你的程序在启动时自己守护。

然后,要在下次休眠时重新启动程序,您只需触摸重启文件即可。您可以在配置文件中将其路径设置为您喜欢的任何路径。