【问题标题】:PyArango holds persistent connection with pod even after Node Death (Kubernetes)即使在节点死亡后,PyArango 仍保持与 pod 的持久连接 (Kubernetes)
【发布时间】:2022-12-17 20:19:20
【问题描述】:

我有一个 Kubernetes 多节点系统,设置了 3 个三个节点。我正在使用 PyArango 在节点 2 上的 pod 与 Arango 部署之间创建连接,Arango 部署有两个协调器 pod,一个在节点 2 上,一个在节点 3 上。

我正在测试系统的弹性,我注意到一个问题。似乎如果我正在更新 Arango 上的集合并且我的程序(在节点 2 上运行)连接到节点 3 上的 Arango Coordinator pod 并且我关闭节点 3,连接不会超时,它只会保持原样长达20分钟。

如果连接空闲或 30 秒后没有响应,我希望连接超时。

我使用 PyArango 方法尝试了一些不同的东西,但没有成功。如何让 python 或 PyArango 在失效连接上尽快超时?

目前这是我的连接设置代码的 sn-p:

 retry_policy = Retry(total=0, connect=0, read=0 ,
                       other=0, backoff_factor=0)
  while conn == None:
    try:
        conn = Connection(arango_url, username, password,
                          max_retries=retry_policy)
        conn.session.session.headers['Retry-After'] = '10'
        conn.session.session.headers['Keep-Alive'] = 'timeout=5'
      else:
        conn = Connection(arangoURL=arango_url, max_retries=retry_policy)

        conn.session.session.headers['Retry-After'] = '10'
        conn.session.session.headers['Keep-Alive'] = 'timeout=5'

任何帮助都会很棒!

【问题讨论】:

    标签: python kubernetes connection arangodb pyarango


    【解决方案1】:

    您始终可以将连接字符串添加到您的连接字符串中: 连接超时=180;

    此连接超时是指解析与数据库的初始连接所花费的时间。你可以在SQL Connection timeoutproperty doc中参考这个

    或者参考这个SO。您可以通过使用自定义 HTTP client for Arango 来增加 HTTP 客户端的 timeout。 默认设置 here 为 60 秒。

    【讨论】:

      猜你喜欢
      • 2022-10-11
      • 2019-11-04
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 2013-10-07
      相关资源
      最近更新 更多