0

我知道允许使用魔术命令提交 Gremlin 查询的图形笔记本项目。但是,有时我需要在常规 Jupyter 笔记本单元中使用 Python 编写代码并使用代码连接到服务器。如果,使用 Gremlin Python 3.5.2 客户端我尝试做这样的事情:

server = '<your server endpoint goes here>'
port = 8182

endpoint = f'wss://{server}:{port}/gremlin'

connection = DriverRemoteConnection(endpoint,'g')

g = traversal().withRemote(connection)

由于 Jupyter 事件循环已在运行,因此引发错误。

有没有解决的办法?

4

1 回答 1

3

在创建远程连接时可以指定一个附加参数,告诉 Python 客户端嵌套事件循环。您只需要按照以下方式创建连接:

server = '<your server endpoint goes here>'
port = 8182

endpoint = f'wss://{server}:{port}/gremlin'
print(endpoint)

connection = DriverRemoteConnection(endpoint,'g',
                 transport_factory=lambda:AiohttpTransport(call_from_event_loop=True))

g = traversal().withRemote(connection)

关键区别在于transport_factory提供的自定义实际上只是lambda常规的包装器AiohttpTransportcall_from_event_loop参数设置为True.

这个额外的配置告诉 Gremlin Python 客户端应用适当的内部更改来嵌套事件循环。

于 2022-03-03T20:40:00.903 回答