2016-05-21 6 views
1

У меня есть программа python, которая должна работать 24/7. Он спит около 10% времени с интервалом в 30 секунд. Есть ли способ остановить программу и начать безопасно, чтобы перезапуск был только во время сна?Перезапуск программы 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

Одним из способов было бы изменить ваш главный() на что-то вроде этого:

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/, чтобы ваша программа демоннизировала себя при запуске.

Затем, чтобы перезагрузить программу при следующем сном, вам нужно только нажать файл перезагрузки. Вы можете установить его путь к тому, что вам нравится в вашем файле конфигурации.

Смежные вопросы