Как запихнуть в threading.Timer() async-функцию?

В модуле threading в Python есть класс Timer, который предоставляет возможность запускать функцию в отдельном потоке (также называемый таймером) через указанное количество времени. Однако, threading.Timer не поддерживает непосредственный запуск async функций напрямую. Но можно воспользоваться asyncio модулем для достижения асинхронности внутри threading.Timer.

Для того чтобы запустить async функцию с помощью threading.Timer вам потребуется выполнить следующие шаги:

1. Импортируйте модули threading и asyncio:

import threading
import asyncio

2. Определите async функцию, которую вы хотите выполнить:

async def my_async_function():
    # ваш код async функции

3. Создайте вспомогательную функцию, которая будет запускать вашу async функцию с использованием asyncio.run():

def run_async_function():
    asyncio.run(my_async_function())

4. Затем создайте экземпляр класса Timer и передайте в него вашу вспомогательную функцию для запуска async функции:

timer = threading.Timer(5, run_async_function)  # 5 секунд задержки, можно изменить на нужное значение

5. Наконец, запустите таймер используя метод start():

timer.start()

При достижении указанной задержки, таймер будет запускать вашу async функцию в отдельном потоке.

Обратите внимание, что вы должны вызвать asyncio.run() внутри отдельной функции, так как asyncio не предоставляет возможность запускать async функции напрямую вне асинхронного контекста.

Надеюсь, это поможет вам запустить async функцию с помощью threading.Timer() в Python.