使用python elasticsearch客户端嗅探来解决死TCP连接问题

时间:2016-11-29 12:11:22

标签: python elasticsearch django-haystack

我的应用程序中的Python elasticsearch客户端存在连接问题(拒绝连接),因为空闲的TCP连接由于防火墙而超时(我无法阻止这种情况)。

我解决此问题的最简单方法是,如果我可以通过定期向其发送一些数据来阻止连接进入空闲状态,那么elasticsearch客户端中的嗅探选项似乎是理想的选择,但是他们会{{{{{ 3}}:

  

sniff_on_start - 指示是否获取节点列表的标志   来自启动时的cluser

     

sniffer_timeout - 秒数   自动嗅探之间

     

sniff_on_connection_fail - 标志控制   如果连接失败触发嗅探

     

sniff_timeout - 用于嗅探请求的超时 - 它应该是一个快速的api调用,我们可能会讨论更多节点,因此我们希望快速失败。初始嗅探期间未使用(如果启用sniff_on_start),则仍未初始化连接。

如果我使用sniff_timeoutsniffer_timeout选项,我希望客户每隔5分钟嗅一次?此外,sniff_on_start参数应设置为True吗?

1 个答案:

答案 0 :(得分:0)

我使用了@val中的建议,发现这些设置解决了我的问题:

sniff_on_start=True
sniffer_timeout=60
sniff_on_connection_fail=True

嗅探会在TCP连接上放置足够的流量,以便它们永远不会空闲,以防止我们的防火墙终止连接。