Gremlin Python - это реализация варианта языка Gremlin, см. http://tinkerpop.apache.org/docs/current/tutorials/gremlin-language-variants/.
Таким образом, он полагается на GremlinServer для выполнения обходов.
Назначение:
g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))
откроет подключение к серверу через веб-сокет. Не существует такой вещи, как «сохранение» путем сохранения копии этого соединения. Все механизмы сохранения происходят на стороне сервера. Я убедился в этом на собственном горьком опыте, когда попробовал следующий код:
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
Приведенный выше код работает и загружает пример авиамаршрутов. Но это нарушает все другие тесты, поскольку теперь современный график по умолчанию для используемого сервера в упомянутом ниже руководстве исчез!
Вы можете открыть несколько подключений к серверу через веб-сокеты, но все они имеют одно и то же «состояние» нижележащего графа. Плохая новость заключается в том, что на это состояние непросто повлиять через API, что является преднамеренным решением текущей архитектуры. В настоящее время выполняется множество настроек yaml и файлов свойств, а также запуска и остановки серверов.
Мое предложение по улучшению https://issues.apache.org/jira/projects/TINKERPOP/issues/TINKERPOP-2294?filter=allopenissues основана на разочаровании, которое приносит этот подход.
Особенно разделяю ваше «я недостаточно хорошо разбираюсь в архитектуре gremlin python». ИМХО, это не потому, что у вас или у меня есть проблемы с пониманием этого, а потому, что это недостаточно объяснено. Тем более примеры отсутствуют. Вот почему я начал: http://wiki.bitplan.com/index.php/Gremlin_python - учебное пособие, призванное сделать начало работы с gremlin python менее болезненным.
person
Wolfgang Fahl
schedule
20.09.2019