для этой функциональности есть run_in_executor
functools.wraps частично закрывает твои потребности, но вообще ты хуйню какую-то делаешь
https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor
скинь код текстом
def force_async(function): ''' turns a sync function to async function using threads :param sync function: :return async function: ''' from concurrent.futures import ThreadPoolExecutor import asyncio pool = ThreadPoolExecutor() def wrapper(*args, **kwargs): future = pool.submit(function, *args, **kwargs) return asyncio.wrap_future(future) # make it awaitable return wrapper
например: playground
вообще я бы использовал asyncio.to_thread tbh
А где можно почитать поглубже про асинкио? Большая часть того что нашёл рассказывает только что нужно перед корутиной await писать :D
https://docs.python.org/3/library/asyncio.html
Есть, например, плейлист от Лукаша на ютубе и видос от David Beazley (не совсем про asyncio, но всё же)
у фаулера книга осенью вышла... вся про asyncio
у фаулера? по питону?
там другой фаулер
а он чем знаменит?
там фаулер мэттью
книгой про асинкио хаха
У Олега Молчанова на ютубе есть плейлист. Хорошо объясняет, с самого начала, так что советую
Он ещё по логированию курс делал?
Вот это уже не знаю, возможно
Посмотрел весь курс, вообще не то. Искал глубже, чем запуск корутины
Эммм, там ведь работу модуля селект показывает, реализует ивентлуп, потом коллбеки, генераторы и только потом асинкио. Что значит "глубже", что именно ты хочешь увидеть?
Хочу увидеть как можно использовать асинкайо кроме ран(корутин())
Если ты с ключевыми особенностями разобрался, то дальше можно проекты какие-нибудь посмотреть + самому что-то реализовать.
Так то разговор начался с того, как я просил подсказать по тайпхинтингу в запуске синхронной функции в асинхронном варианте через декоратор с тредпулэкзекутором
Спасибо
Обсуждают сегодня