2016-05-21 9 views
1

Ich habe ein Python-Programm, das 24/7 laufen muss. Es schläft ungefähr 10% der Zeit in 30-Sekunden-Intervallen. Gibt es eine Möglichkeit, das Programm anzuhalten und erneut sicher zu starten, so dass der Neustart nur während des Schlafs erfolgt? HierNeustart eines Python-Programms im Ruhezustand?

ist ein Beispiel für den Code, der main() Funktion und Umsetzung:

# ============================================================================= 
# 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

Ja, ich kann Ihnen zeigen, wie das geht, aber Sie müssen Ihren Code posten. Zumindest ein Beispiel, das den Kontrollfluss des Programms zeigt. – Will

+0

Danke, hoffentlich ist es nicht zu viel und hässlich durchzukämmen. https://github.com/SIlver--/remindmebot-reddit –

Antwort

2

Eine Möglichkeit wäre, Ihre Haupt wie folgt aus(), um etwas zu ändern:

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

Für zusätzliche Kredit Verwenden Sie etwas wie https://pypi.python.org/pypi/python-daemon/, um Ihr Programm beim Start selbst zu dämonisieren.

Um das Programm beim nächsten Mal neu zu starten, müssen Sie lediglich die Neustartdatei berühren. Sie können seinen Pfad in Ihrer Konfigurationsdatei beliebig festlegen.

Verwandte Themen