@vitalysokolov

Как правильно обработать исключение в AsyncIOScheduler?

async def main():
    try:
        global worker

        worker = Worker()
        await worker.run()
        if task['scheduler']['enabled']:
            scheduler = AsyncIOScheduler(timezone=str(tzlocal.get_localzone()))
            cron_trigger = CronTrigger(
                hour=f'{task["scheduler"]["start_at"]}-{task["scheduler"]["finish_at"]}',
                minute=f'*/{task["scheduler"]["exec_interval_min"]}',
                second='0'
            )
            scheduler.add_job(worker.run, trigger=cron_trigger)
            try:
                scheduler.start()
            except Exception as err:
                print("Inner")
    except Exception as err:
        print("Outer")


Если возникает исключение в await worker.run() , то оно ловится внешним
except Exception as err:
        print("Outer")


Но если исключение возникает тут:
try:
                scheduler.start()


То вот эта конструкция не срабатывает
except Exception as err:
                print("Inner")


Почему? И как правильно обрабатывать исключения в таком случае?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
worker = Worker()
await worker.run()

Так исключение-то тут возникает, наверно?
Вообще у тебя что-то странное творится - сначала выполняешь воркера, а потом по условию планируешь его повторное выполнение планировщиком.

Ну а так, я бы просто обернул вызов worker.run() в свою подпрограмму, которая бы ловила исключения и обслуживала их как надо, и планировал уже её выполнение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы