2016-05-21 7 views
1

私は24/7を実行する必要があるpythonプログラムを持っています。それは30秒間隔で約10%の時間眠っている。プログラムを停止して安全に再開させる方法がありますので、スリープ中に再起動するだけですか?睡眠中のpythonプログラムを安全に再起動しますか?

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') 

追加クレジットの場合:

# ============================================================================= 
# 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()機能と実装です起動時にプログラムをデーモン化するには、 https://pypi.python.org/pypi/python-daemon/のようなものを使用してください。

次に、次のスリープ時にプログラムを再起動するには、再起動ファイルに触れてください。あなたの設定ファイルで好きなものにパスを設定することができます。

関連する問題