嵌套 AsyncIO 循环#
NeMo Guardrails 是一个异步优先的工具包,即,核心功能是使用异步函数实现的。为了提供阻塞 API,该工具包必须使用 asyncio.run
在同步代码内部调用异步函数。但是,当前 Python 的 asyncio
实现不允许“嵌套事件循环”。Python 核心团队正在讨论这个问题,并且很可能将会添加支持(参见 GitHub Issue 66435 和 Pull Request 93338)。
同时,NeMo Guardrails 使用了 nest_asyncio。当第一次加载 nemoguardrails
包时,将应用补丁。
如果不需要阻塞 API,或者 nest_asyncio
补丁导致意外问题,您可以通过设置 DISABLE_NEST_ASYNCIO=True
环境变量来禁用它。