源码阅读 - asgiref.sync 模块
asgiref.sync 实现了 AsyncToSync / SyncToAsync 两种类,分别用于将同步和异步的方法和函数转换类型使用。
- AsyncToSync 的实现是 在
__call__
中调用loop.call_soon_threadsafe(f),
, 限制是只能在主线程中。 - SyncToAsync 的实现是在
async def __call__
中调用fut = loop.run_in_executor(...); return await asyncio.wait_for(fut)
.