有没有办法在 asyncio Python 应用程序中使用 Gremlin?

ska*_*ski 6 gremlin tinkerpop gremlinpython

TinkerPop 文档描述了 Python 的 GLV。但是,那里提供的示例是围绕同步代码构建的。有一个aiogremlin库,旨在支持在 Python 的 asyncio 代码中使用 Gremlin。不幸的是,该项目似乎已停止。

官方 GLV 是否支持 asyncio 或者有没有办法在异步 Python 应用程序中使用 Gremlin?

Kel*_*nce 1

我注意到这个问题还没有得到解答,所以这里......

Gremlin Python 客户端现在使用 Tornado。将来可能会改变只使用 aiohttp。让事件循环很好地协同工作可能很棘手。我发现的最简单的方法是使用 Nest-asyncio 库。安装后你可以写这样的东西。我没有显示g正在创建的内容,但此代码假设已建立与服务器的连接,这g就是图遍历源。

import nest_asyncio
nest_asyncio.apply() 

async def count_airports():
    c = g.V().hasLabel('airport').count().next()  
    print(c)
    
async def run_tests(g):
    await count_airports() 
    return
 
asyncio.run(run_tests(g))     
Run Code Online (Sandbox Code Playgroud)

正如您提到的,另一个选择是使用 aiogremlin 之类的东西。

2023-08-29 更新:最新版本的 Gremlin Python 客户端现在使用 AIOHTTP 作为其传输机制。这对应用程序影响很小,但这是一个需要注意的重要变化。客户端现在有一个参数,可以在创建时使用,告诉它嵌套事件循环。