#python #error-handling
#python #обработка ошибок
Вопрос:
я использую python для обхода веб-страниц, и у меня есть программа, которую я хочу запускать вечно. к сожалению, я могу столкнуться с ошибками в любое время. например:
import schedule
import time
import threading
def test():
print('test')
#here is the main code which may cause any error anytime
schedule.every(5).seconds.do(test)
def running():
while True:
schedule.run_pending()
time.sleep(1)
thread = threading.Thread(target=running)
thread.start()
#rest of the program which may cause any error anytime
как я могу изменить его, чтобы при возникновении ошибки он перезапускался с самого начала?
я использовал while
, try
но не смог получить ответ, а также прочитать os
, subprocess
но опять ничего полезного.
Комментарии:
1. используйте
try/except
для перехвата ошибки, а затем вы можете перейти к началуwhile True
или вы можете выйтиwhile True
, что может быть внешнимwhile True
с функциями, которые сбрасывают настройки перед повторным запуском кода. В Linux популярно использовать внешний программный супервизор для управления процессом и перезапуска его, когда он не работает. В конце концов, вы периодически запускаете его, используя programcron
вместо modulesheduler
, и он будет запускать его снова через минуту (минуты), даже если он сломан.2. проблема в
while True
том, что он будет запускать программу снова и снова, даже если она не выдает ошибку. и если вы сделаете заявление о прерывании while, когда программа не выдает ошибку, программа запустится только один раз и не будет перезапускаться после ошибки (учтите, что программа — это времяоснованный на нем и может вызвать ошибку в любое время …)