Asyncio: остановить сопрограммы на исключение - PullRequest
0 голосов
/ 10 ноября 2019

Я пишу функцию, которая должна быть перезапущена в случае обнаружения исключения, но я не знаю, как это сделать. У меня есть этот кусок кода, но он не работает.:

1002 *

1 Ответ

1 голос
/ 10 ноября 2019

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

async def amain():
    # Lot of code

def main():
    while True:
        try:
            asyncio.run(amain())
        except KeyboardInterrupt:
            break
        except Exception as e:
            log(e)

Что-то в этом роде.

...