Web 应用程序中的 Gremlin Python

2023-12-23

我有一个 python Flask Web 应用程序,它正在使用查询 Janus 图数据库gremlin_python。一个基本问题是初始化图遍历对象的正确方法。

  1. 我可以初始化我的遍历吗g = traversal().withRemote(DriverRemoteConnection(...)并持久化遍历变量g跨请求? (所有请求都针对同一个图表。我尝试了这个并开始得到tornado.iostream.StreamClosedError间歇性地。
  2. 第二个选项是为每个请求创建一个遍历。我不太了解 gremlin python 架构;每个请求执行此操作是否会产生大量开销?

谢谢


Gremlin Python 是 Gremlin 语言变体实现,请参阅http://tinkerpop.apache.org/docs/current/tutorials/gremlin-language-variants/ http://tinkerpop.apache.org/docs/current/tutorials/gremlin-language-variants/.

因此,它确实依赖 GremlinServer 来执行遍历。

分配:

g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))

将打开到服务器的 websocket 连接。不存在通过保留该连接的副本来“持久”这样的事情。持久化机制全部发生在服务器端。当我尝试以下代码时,我发现了这一点:

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

g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))

# test loading a graph
def test_loadGraph():
   # make the local file accessible to the server
   airRoutesPath=os.path.abspath("air-routes-small.xml")
   # drop the existing content of the graph
   g.V().drop().iterate()
   # read the content from the air routes example
   g.io(airRoutesPath).read().iterate()
   vCount=g.V().count().next()
   assert vCount==1000

上面的代码可以运行并加载航线示例。但它破坏了所有其他测试,因为现在下面提到的教程中使用的服务器的默认现代图已经消失了!

您可以打开与服务器的多个 websocket 连接,但它们都共享底层图的相同“状态”。坏消息是,通过 API 影响这种状态并不容易,这是当前架构的故意决定。目前涉及大量配置 yaml 和属性文件以及启动和停止服务器。

我的改进建议https://issues.apache.org/jira/projects/TINKERPOP/issues/TINKERPOP-2294?filter=allopenissues https://issues.apache.org/jira/projects/TINKERPOP/issues/TINKERPOP-2294?filter=allopenissues是基于这种方法带来的挫败感。

特别是我分享你的“我不太了解 gremlin python 架构”。恕我直言,这并不是因为你或我在理解它方面有问题,而是因为它不是解释了足够好。特别是缺少示例。这就是我开始的原因:http://wiki.bitplan.com/index.php/Gremlin_python http://wiki.bitplan.com/index.php/Gremlin_python- 旨在让 gremlin python 入门变得不那么痛苦的教程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web 应用程序中的 Gremlin Python 的相关文章

随机推荐

  • 如何对齐引导表单中的元素

    请 看看我的代码 http www bootply com VcVDblSFK7 http www bootply com VcVDblSFK7 我希望将键符号和输入控件的范围放在同一行中 后 面是错误消息的范围 但我已经做了太多的编辑 并
  • 在c/c++中通过内存中的地址调用函数

    已知函数的原型及其在内存中的地址 是否可以从另一个进程或除了原型和内存地址之外一无所知的一段代码中调用该函数 如果可能的话 如何在代码中处理返回的类型 在现代操作系统上 每个进程有自己的地址空间并且地址仅在进程内有效 如果您想在其他进程中执
  • PowerManager.PARTIAL_WAKE_LOCK android

    我很困惑是否要获取这个唤醒锁 例如 我有这种类型的代码 是从onReceive of a BroadcastReceiever CONNECTIVITY CHANGE BOOT COMPLETED 等 异步地即我正在启动一个IntentSe
  • 如何读取 .lbl 文件

    我想读我的 lbl文件并将其数据存储到数据库列中 因此 每当用户想要修改它时 他们可以创建一个新的 lbl来自数据库的文件 我已经转换了我的 lbl使用下面所示的代码片段将数据转换为二进制 byte fileBytes File ReadA
  • 使用mock模拟嵌套属性

    我有一个返回对象的函数调用 r Foo x y where r具有丰富的嵌套属性集 例如 我可以访问r prop a prop b prop c 我想嘲笑Foo 这样特定的叶子属性r被修改 即使得r prop a prop b prop c
  • 使用 libxml2 进行递归 XPath 查询的最有效方法是什么?

    我为 libxml2 编写了一个 C 包装函数 它使我可以轻松地对 XML 文档进行查询 bool XPathQuery const std string doc const std string query XPathResults re
  • 阻止导航控制器影响其他视图控制器

    我有一个应用程序 它使用带有三个视图控制器的导航控制器来进行分步用户设置 因此 第一个视图将是步骤 1 第二个视图将是步骤 2 等等 所有这些都将嵌入到导航控制器中 以便用户能够来回移动 但是 一旦完成此设置并且用户按下 完成 按钮 应用程
  • Android 数据库被其他线程锁定

    我正在处理 android sqLite 数据库 其中我无法将记录插入数据库 在代码中 我在启动应用程序时仅打开数据库一次 并且设置了对我的应用程序类变量的引用 以便我可以从代码的任何部分访问数据库 并且效果很好 问题是 我可以访问数据库
  • 从文件名中提取日期

    我遇到一种情况 我需要从文件名中提取日期 其一般模式是 filename YYYYMMDD fileExtension e g xxx 20100326 xls or x2v 20100326 csv 下面的程序完成了这项工作 Number
  • 获取复选框的多个值

    我如何使用此代码在 codeigniter 中获取多个复选框值
  • 为什么 Python 列表上的 `for` 比 Numpy 数组上的 `for` 更快?

    因此 在没有讲一个很长的故事的情况下 我正在编写一些代码 从二进制文件中读取一些数据 然后使用 for 循环遍历每个点 所以我完成了代码 但它运行得慢得离谱 我从大约 128 个数据通道循环了大约 60 000 个点 这需要一分钟或更长时间
  • 无法使用 SAX 读取某些属性

    我正在尝试使用 SAX 解析该文档
  • Scala 变量字符串插值而不是文字

    首先道歉 作为 Scala 的初学者 我找不到更好的措辞来回答这个问题 我有一个属性文件 需要在其中定义一些参数化命令 或 sql 查询 以下是一个示例 section abc stage StageA query Select count
  • 创建图标字体的工具[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想创建一个在网络应用程序中使用的图标字体 fontAwesome Iconic fontomas 是
  • 类 API 中的 getDeclaredConstructors 和 getConstructors 有什么区别?

    我注意到在 Java Reflection API 中有两种不同的调用构造函数的方法 getDeclaredConstructors getConstructors方法 尽管 Java 文档略有不同 getDeclaredConstruct
  • 如何从 xml 获取节点而不知道其在 flex 中的级别?

    我的问题是 如何获得我想要插入的节点 I e
  • 如何关闭InputStream和OutputStream?

    我使用以下代码来关闭与服务器的连接的 InputStream 和 OutputStream try if mInputStream null mInputStream close mInputStream null if mOutputSt
  • 用线条替换 QTextEdit 边界框

    这个问题是对边界框 https stackoverflow com questions 46911925 getting the bounding box of qtextedit selection例子 我试图了解如何绘制简单的形状 我只
  • TurnContext Respond 如何使用 Waterfalldialogs 工作?

    我的 TaskOnTurn 方法有问题 当我启动机器人时 它会发送欢迎消息并启动一个新的对话框 因为 if turnContext Responded 现在 当我在对话框中时 它会再次跳到最后一个 if 语句 并且当我已经在一个对话框中时
  • Web 应用程序中的 Gremlin Python

    我有一个 python Flask Web 应用程序 它正在使用查询 Janus 图数据库gremlin python 一个基本问题是初始化图遍历对象的正确方法 我可以初始化我的遍历吗g traversal withRemote Drive