嵌套 AsyncIO 循环#

NeMo Guardrails 是一个异步优先的工具包,即,核心功能是使用异步函数实现的。为了提供阻塞 API,该工具包必须使用 asyncio.run 在同步代码内部调用异步函数。但是,当前 Python 的 asyncio 实现不允许“嵌套事件循环”。Python 核心团队正在讨论这个问题,并且很可能将会添加支持(参见 GitHub Issue 66435Pull Request 93338)。

同时,NeMo Guardrails 使用了 nest_asyncio。当第一次加载 nemoguardrails 包时,将应用补丁。

如果不需要阻塞 API,或者 nest_asyncio 补丁导致意外问题,您可以通过设置 DISABLE_NEST_ASYNCIO=True 环境变量来禁用它。