問題描述:
在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
感覺這個應該能夠解決,測試中,等測試完來更新
-------------------------------------------------長長的分割線----------------------------------------------------------------------
在我這測試好像沒有用,內心好崩潰