@estry

Выполнить другую функцию если первая выполняется дольше 15 секунд?

Есть асинхронные функции get_count, get_result и notification.
Функция get_count вызывается из функции get_result. Однако выполнение функции get_count может занять длительное время.
Как сделать так, чтобы при выполнение функции get_count дольше 15 секунд вызывалась функция notification? Но при этом выполнение функции get_count не должно прерываться.
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Тривиально. Что-то вроде
async def notify_long_task():
    'Выполняет оповещение о длинной операции.'
    await asyncio.sleep(15.0)  # ждём таймаут
    await send_notification('Извините, я что-то туплю.')  # оповещаем

async def actual_long_task():
    notification = asyncio.create_task(notify_long_task())  # планируем оповестить
    await perform_long_task()  # потенциально долгая операция
    notification.cancel()  # отменяем оповещение, если оно ещё не сработало.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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