GremlinPython 使用 aiohttp 向 DriverRemoteConnection 添加连接和请求超时

GremlinPython add connection and request timeout to DriverRemoteConnection with aiohttp

我正在将 gremlinpython 包从 3.4 升级到 3.5

作为升级的一部分,tornado 已被删除,仅支持 aiohttp。

之前,为了创建带有连接和请求超时的 DriverRemoteConnection,我使用了以下代码

from tornado import httpclient

req = httpclient.HTTPRequest(
    connection_str,
    connect_timeout=gremlin_connect_timeout_secs, 
    request_timeout=gremlin_request_timeout_secs
)
driver_remote_connection = DriverRemoteConnection(
    req, "g", pool_size=pool_size, max_workers=max_workers
)
g = traversal().withRemote(driver_remote_connection)

现在不再支持 tornado,3.5+ 中的等效项是什么?

我连接到 AWS Neptune。

我查看了 aiogremlin 包和 aiohttp 库,但它要求我创建异步客户端,而我不需要异步连接。

我可以简单地创建 DriverRemoteConnection

driver_remote_connection = DriverRemoteConnection(
    self.conn, pool_size=self.pool_size, max_workers=self.max_workers
)

但是我无法通过 connection/request 超时。

通过挖掘 gremlinpython 和 aiohttp 的源代码找到了答案。

传递给 DriverRemoteConnection 的 kwargs 传递给 AiohttpTransport。 所以传递连接和请求超时参数的正确方法是这样的:

driver_remote_connection = DriverRemoteConnection(
    self.conn,
    pool_size=self.pool_size,
    max_workers=self.max_workers,
    timeout=gremlin_connect_timeout_secs,
    read_timeout=gremlin_request_timeout_secs,
)