关于集群部署问题中python配置文件host

集群部署5台机器,我想知道python代码的配置文件 应该怎么写host 连接图数据


https://github.com/vesoft-inc/nebula-python 参考下 Python 客户端的 example 示例

2.6.1版本的也是这样的吗

是啊。:thinking: 这个客户端配置的话,应该是没有改过的

9669端口不需要吗

9669 是 graph的用的端口,你可以看下 example 的示例,一样的,用 [('ip1', port1), ('ip2', port2),('ip3', port3)] 就行。

我傻了,我代码里是这样写的(单台的)

class Nebula_Graph():
    def __init__(self, host=const.const_nebula_host, port=const.const_nebula_port, user=const.const_nebula_name,
                 password=const.const_nebula_password, SPACE=const.const_nebula_space_graph, data_info=None):
        self.config = Config()
        self.config.max_connection_pool_size = 10
        # 初始化连接池
        self.connection_pool = ConnectionPool()
        # 如果给定的服务器正常,则返回 true,否则返回 false。
        self.ok = self.connection_pool.init([(host, port)], self.config)

        # 方法 1:控制连接自行释放。
        # 从连接池中获取会话
        self.session = self.connection_pool.get_session(user, password)`

跟官网的不一样,不知道怎么改了

这里呀。一样的,把地址填上去,用英文下的逗号分隔开

那你第一次回复我的,meta那些地址 我应该放在那里呢?

你这个应该是 graph 的配置吧,graph 服务会通过 graph 的配置文件和指定 meta 通信。简而言之。填一个就好了。我刚那个是 storage 的客户端。用一个就好了

如果我有5台机器,self.ok = self.connection_pool.init([(host, port)],这里只需要写入5台就行了,graph服务也是可以的,IP*5+port(9669)。其他的不影响是这个意思吗

你这 5 台机器是咋配置的,每台都有部署 graphd 吗?是的话,就 5 个 ip:port,如果你是指机器 A 和机器 C、D 部署了 graphd 的话,就填 A、C、D 的地址就好了。

self.ok = self.connection_pool.init([(host, port)], self.config)
改写成
host = [(“192.168.1.225”,9669)]
self.ok = self.connection_pool.init(host, self.config)
写成这样 一上服务器就会报错。本地不报错。

TypeError: gethostbyname() argument 1 must be str, bytes or bytearray, not list

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/root/knowledge_py37/knowledge-platform-ai/knowApp.py", line 6, in <module>
    from config.appConf import AppConf
  File "/root/knowledge_py37/knowledge-platform-ai/config/appConf.py", line 5, in <module>
    from controller import knowProduced
  File "/root/knowledge_py37/knowledge-platform-ai/controller/knowProduced.py", line 34, in <module>
    event_nebula = event_nebula_event(log=event_error_log)
  File "/root/knowledge_py37/knowledge-platform-ai/service/knowEventService/event_utils.py", line 733, in __init__
    self.ok = self.connection_pool.init([(host, port)], self.config)
  File "/root/miniconda3/envs/szs/lib/python3.7/site-packages/nebula2/gclient/net/ConnectionPool.py", line 63, in init
    raise InValidHostname(str(address[0]))
nebula2.Exception.InValidHostname: [('192.168.1.225', 9669)]

:thinking: 你确定服务器端能访问这个地址吗

原本代码中 host就是这个地址。

我的意思是,:thinking: 能 ping 通对吗

对的,现在改成之前的写法,服务器运行正常

你的意思是,一个 ip 可以运行,填了多个 ip 会报错?

不是,我本地直连数据库,哪种方式都可以。但是如果配置文件里面host为列表形式,就报错

可以具体的贴一下哪个可行,哪个不可行吗,我找个研发同学给你瞅瞅