问题描述:
在django中使用es, 当长时间没有请求查询时(大概半个小时左右),请求,则会出现超时异常,而下一次则会请求成功
初步排查:
通过测试与网上收集信息,初步判定为长时间空闲导致防火墙断开了连接,之后请求由于超时引发异常进行了自动重连,而下一次请求时则由于上一次连接已经连好了,所以正常(个人推测,可能不太对)
尝试解决:
1. 开始总觉得是超时,所以设置了自动重试,但是好像没什么效果
2. 笨办法临时凑活,加个异常特定捕获这个异常,如果捕获了就再进行查询一次。问题虽然能解决,但有点傻,耗时长不说,代码也很啰嗦,先凑活着再找办法
3. 看到一位网友的分享http://cn.voidcc.com/question/p-mbqrwpya-ro.html,https://stackoverflow.com/questions/39640200/elasticsearch-python-client-work-with-many-nodes-how-to-work-with-sniffer/39640389#39640389
使用嗅探,之前一直没明白这个是做什么的
sniff_on_start=True sniffer_timeout=60 sniff_on_connection_fail=True
感觉这个应该能够解决,测试中,等测试完来更新
-------------------------------------------------长长的分割线----------------------------------------------------------------------
在我这测试好像没有用,内心好崩溃