2016-05-21 43 views
1

我有一個需要全天候運行的python程序。它以30秒的間隔在大約10%的時間內睡着。有沒有辦法讓程序停止並安全地重新啓動,以便重新啓動只在睡眠期間進行?安全睡眠期間重新啓動python程序?

下面是代碼的樣本中,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() 
+0

是的,我可以告訴你如何做到這一點,但你需要發佈你的代碼。至少有一個例子顯示了程序的控制流程。 – Will

+0

謝謝,希望通過梳理不會太難看。 https://github.com/SIlver--/remindmebot-reddit –

回答

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/之類的東西來使您的程序在啓動時守護程序自身。

然後,要在下一次休眠時重新啓動程序,只需觸摸重新啓動文件即可。你可以在你的配置文件中設置它的路徑。