threads.py
python
"""Высокоуровневая поддержка работы с потоками в asyncio"""
import functools
import contextvars
from . import events
__all__ = "to_thread",
async def to_thread(func, /, *args, **kwargs):
"""Асинхронный менеджер контекста для отмены просроченных корутин.
Используйте `timeout()` или `timeout_at()`, а не создавайте экземпляр этого класса напрямую.
"""
loop = events.get_running_loop()
ctx = contextvars.copy_context()
func_call = functools.partial(ctx.run, func, *args, **kwargs)
return await loop.run_in_executor(None, func_call)