You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Cosmos DB Emulator-Gremlin API无法通过Python连接求助

解决Python连接Azure Cosmos DB模拟器Gremlin API失败问题

问题描述

已成功通过Gremlin控制台连接Azure Cosmos DB模拟器的Gremlin API,但使用Python代码连接时触发错误:RuntimeError: Connection was closed by server。

出错的Python代码

from gremlin_python.process.anonymous_traversal import traversal
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

conn = DriverRemoteConnection(url='ws://localhost:8901/gremlin',
                              traversal_source='g',
                              username='/dbs/db1/colls/coll1', password='C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==')


g = traversal().withRemote(conn)
g.V().toList()

Gremlin控制台使用的conf\remote-localcompute.yaml配置

hosts: [localhost]
port: 8901
username: /dbs/db1/colls/coll1
password: C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
connectionPool: {
enableSsl: false}
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0,
config: { serializeResultToString: true  }}

解决方案

问题根源在于Python代码未匹配控制台配置中的序列化器规则和SSL设置,修改代码如下:

from gremlin_python.process.anonymous_traversal import traversal
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
from gremlin_python.driver.serializer import GraphSONMessageSerializerV1d0

# 对齐控制台的序列化器配置
serializer = GraphSONMessageSerializerV1d0()
serializer.config = {'serializeResultToString': True}

conn = DriverRemoteConnection(
    url='ws://localhost:8901/gremlin',
    traversal_source='g',
    username='/dbs/db1/colls/coll1',
    password='C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==',
    serializer=serializer,
    enable_ssl=False  # 与控制台的enableSsl配置保持一致
)

g = traversal().withRemote(conn)
result = g.V().toList()
print(result)

关键说明

  • 必须使用GraphSONMessageSerializerV1d0并开启serializeResultToString,否则客户端与服务器的序列化格式不兼容,会直接被服务器断开连接
  • 显式设置enable_ssl=False,与控制台配置同步,避免SSL握手失败导致的连接问题

内容的提问来源于stack exchange,提问作者RandomPerson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:10:32