我正在尝试将 fastapi 与gremlin-python一起使用。该库使用 tornado 作为连接到 gremlin 服务器的传输,特别是它使用 httpclient 和 websockets 以及 tornado 的ioloop。
问题是 python 禁止嵌套事件循环并且我得到运行时错误:https ://pastebin.com/mcFhuKks 目前作为解决方法我使用nest_asyncio,但这是一个非常不可靠的解决方案。
由于之前我在这里看到了几个关于 asyncio 循环的问题(尽管主要是关于 aiohttp),我很好奇是否有一些简单的方法可以解决这个问题(例如,以某种方式重用父事件循环)。
另外我想注意到 gremlin-python DB 连接构造函数支持传递自定义传输工厂(而不是default),我尝试使用类似asyncio.get_event_loop()
andasyncio.run_until_complete()
而不是 tornado 的替代品,但没有运气。
因此,我在这里寻求任何想法或可能的解决方案。
- FastAPI 版本:==0.61.1
- Python版本:python:3.8-slim