NEO4j Причинный кластер из Docker не работает - PullRequest
0 голосов
/ 25 октября 2019
  1. Этот код, похоже, работает с файлом хоста
  2. 192.168.1.5 - это IP-адрес хоста
  3. Когда я пытаюсь запустить этот файл из докера, яполучить эту ошибку Transaction failed and will be retried in 1.092425226678844s (Failed to obtain connection towards 'WRITE' server.)
  4. Когда я изменяю протокол на bolt вместо bolt+routing, кажется, что он отлично работает в докере.

Есть идеи, что не так?

import traceback
from neo4j import GraphDatabase, basic_auth

class ExecuteQuery:
    def __init__(self):
        self._driver = GraphDatabase.driver(f"bolt+routing://192.168.1.5:7687", auth=basic_auth("neo4j", "asdf1234"))

    def close(self):
        self._driver.close()

    @staticmethod
    def _execute_query(tx, query):
        print(f"query: {query}")
        result = tx.run(query)
        return result.data()

    @staticmethod
    def do_read(query):
        instance = ExecuteQuery()
        try:
            with instance._driver.session() as session:
                result = session.read_transaction(ExecuteQuery._execute_query, query)
        finally:
            instance.close()
        return result

    @staticmethod
    def do_write(query):
        instance = ExecuteQuery()
        try:
            with instance._driver.session() as session:
                result = session.write_transaction(ExecuteQuery._execute_query, query)
        except:
            print("-----------")
            traceback.format_exc()
        finally:
            instance.close()
        return result


d = ExecuteQuery.do_write("CREATE (a:Test {name:'Hello World!'})")
print(d)

d = ExecuteQuery.do_read("MATCH (n:Test) RETURN n")
print(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...