我如何使用 GraphSON v2 而不是 v3?
How do i use GraphSON v2 instead of v3?
我正在尝试 运行 python 中的一段代码,它使用 Microsoft Azure 的 Cosmos DB。我目前使用的是 gremlinpython 3.2.6 和最新版本的 Cosmos(Microsoft azure 的默认版本),但两者之间似乎存在一些兼容性问题。
当我 运行 我的代码出现以下错误;
GremlinServerError: 498:
ActivityId : 5c05bb15-3aa1-41b8-9c10-ab3015152eab
ExceptionType : GraphMalformedException
ExceptionMessage :
Gremlin Malformed Request: GraphSON v3 IO is not supported.
GremlinRequestId : 5c05bb15-3aa1-41b8-9c10-ab3015152eab
Context : global
GraphInterOpStatusCode : MalformedRequest
HResult : 0x80131500
我读到我应该尝试使用 GraphSON v2 而不是 V3,但不知道如何,有人可以帮忙吗?
欢迎来到这个社区。您只需确保使用 GraphSON v2 的架构,因为它是 Azure Cosmos DB 支持的版本。检查您正在使用的 json 并确保遵循支持的模式。 this link.
中有一些示例
默认gremlin_python使用GraphSONSerializersV3d0
,所以你必须在创建客户端时显式传递GraphSONSerializersV2d0
:
from gremlin_python.driver import client, serializer
client.Client(
message_serializer=serializer.GraphSONSerializersV2d0(),
password="...",
traversal_source='g',
url='wss://...:443/',
username="/dbs/.../colls/...",
)
创建客户端时将其作为mime
类型提供
var client = new GremlinClient(gremlinServer:gremlinServer,mimeType:GremlinClient.GraphSON2MimeType)
使用 C#,如果您将连接配置放在 Startup.cs 中,您可以这样配置:
services.AddSingleton<GremlinClient>(
(serviceProvider) =>
{
var gremlinServer = new GremlinServer(
hostname: "<account>.gremlin.cosmosdb.azure.com",
port: <port>,
enableSsl: true,
username: "/dbs/<db>/colls/<collection>",
password: ""
);
var connectionPoolSettings = new ConnectionPoolSettings
{
MaxInProcessPerConnection = 32,
PoolSize = 4,
ReconnectionAttempts = 3,
ReconnectionBaseDelay = TimeSpan.FromSeconds(1),
};
var mimeType = "application/vnd.gremlin-v2.0+json";
return new GremlinClient
(
gremlinServer: gremlinServer,
graphSONReader: new GraphSON2Reader(),
graphSONWriter: new GraphSON2Writer(),
mimeType: mimeType,
connectionPoolSettings: connectionPoolSettings
);
}
);
否则,您应该使用以下 reader、编写器和 mimeType 创建 gremlin 客户端:
var mimeType = "application/vnd.gremlin-v2.0+json";
var client = new GremlinClient
(
gremlinServer: <your server>,
graphSONReader: new GraphSON2Reader(),
graphSONWriter: new GraphSON2Writer(),
mimeType: mimeType,
connectionPoolSettings: <your connection pool>
);
您需要将版本降级到支持的连接器版本。这适用于所有编程语言。对于撰写本文时的 python,它是 3.2.7.
我正在尝试 运行 python 中的一段代码,它使用 Microsoft Azure 的 Cosmos DB。我目前使用的是 gremlinpython 3.2.6 和最新版本的 Cosmos(Microsoft azure 的默认版本),但两者之间似乎存在一些兼容性问题。
当我 运行 我的代码出现以下错误;
GremlinServerError: 498:
ActivityId : 5c05bb15-3aa1-41b8-9c10-ab3015152eab
ExceptionType : GraphMalformedException
ExceptionMessage :
Gremlin Malformed Request: GraphSON v3 IO is not supported.
GremlinRequestId : 5c05bb15-3aa1-41b8-9c10-ab3015152eab
Context : global
GraphInterOpStatusCode : MalformedRequest
HResult : 0x80131500
我读到我应该尝试使用 GraphSON v2 而不是 V3,但不知道如何,有人可以帮忙吗?
欢迎来到这个社区。您只需确保使用 GraphSON v2 的架构,因为它是 Azure Cosmos DB 支持的版本。检查您正在使用的 json 并确保遵循支持的模式。 this link.
中有一些示例默认gremlin_python使用GraphSONSerializersV3d0
,所以你必须在创建客户端时显式传递GraphSONSerializersV2d0
:
from gremlin_python.driver import client, serializer
client.Client(
message_serializer=serializer.GraphSONSerializersV2d0(),
password="...",
traversal_source='g',
url='wss://...:443/',
username="/dbs/.../colls/...",
)
创建客户端时将其作为mime
类型提供
var client = new GremlinClient(gremlinServer:gremlinServer,mimeType:GremlinClient.GraphSON2MimeType)
使用 C#,如果您将连接配置放在 Startup.cs 中,您可以这样配置:
services.AddSingleton<GremlinClient>(
(serviceProvider) =>
{
var gremlinServer = new GremlinServer(
hostname: "<account>.gremlin.cosmosdb.azure.com",
port: <port>,
enableSsl: true,
username: "/dbs/<db>/colls/<collection>",
password: ""
);
var connectionPoolSettings = new ConnectionPoolSettings
{
MaxInProcessPerConnection = 32,
PoolSize = 4,
ReconnectionAttempts = 3,
ReconnectionBaseDelay = TimeSpan.FromSeconds(1),
};
var mimeType = "application/vnd.gremlin-v2.0+json";
return new GremlinClient
(
gremlinServer: gremlinServer,
graphSONReader: new GraphSON2Reader(),
graphSONWriter: new GraphSON2Writer(),
mimeType: mimeType,
connectionPoolSettings: connectionPoolSettings
);
}
);
否则,您应该使用以下 reader、编写器和 mimeType 创建 gremlin 客户端:
var mimeType = "application/vnd.gremlin-v2.0+json";
var client = new GremlinClient
(
gremlinServer: <your server>,
graphSONReader: new GraphSON2Reader(),
graphSONWriter: new GraphSON2Writer(),
mimeType: mimeType,
connectionPoolSettings: <your connection pool>
);
您需要将版本降级到支持的连接器版本。这适用于所有编程语言。对于撰写本文时的 python,它是 3.2.7.