繁体   English   中英

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

[英]Restarting a python program during sleep safely?

我有一个需要运行24/7的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()

一种方法是将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/的程序,以使程序在启动时自行守护。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM