У меня есть микросервис с заданием, которое должно выполняться только при работающем другом сервере. в течение нескольких недель он прекрасно работает, если сервер не работает, микросервис немного спит, не выполняя работу (как следует), а если сервер не работает - работа была выполнена. сервер никогда не выключается более чем на несколько минут (наверняка! сервер тщательно контролируется), поэтому задание пропускается до 2-3 раз.
Сегодня я вошел в свой Docker контейнер и заметил в журналы о том, что работа даже не пыталась продолжаться в течение нескольких недель (плохой выбор, чтобы не контролировать, я знаю), указывая, что я предполагаю, что произошел какой-то тупик. Я также предполагаю, что проблема связана с моей обработкой исключений, мог бы воспользоваться некоторыми советами, которые я работаю в одиночку.
def is_server_healthy():
url = "url" #correct url for health check path
try:
res = requests.get(url)
except Exception as ex:
LOGGER.error(f"Can't health check!{ex}")
finally:
pass
return res
def init():
while True:
LOGGER.info(f"Sleeping for {SLEEP_TIME} Minutes")
time.sleep(SLEEP_TIME*ONE_MINUTE)
res = is_server_healthy()
if res.status_code == 200:
my_api.DoJob()
LOGGER.info(f"Server is: {res.text}")
else:
LOGGER.info(f"Server is down... {res.status_code}")
(имена переменных были изменены, чтобы упростить вопрос)
Здоровье проверить достаточно просто - вернуть "вверх", если вверх. все остальное считается неработоспособным, поэтому, если статус 200 и «вверх» не вернулись, я считаю, что сервер не работает.