源码阅读 - 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).