@@ -31,10 +31,14 @@ class ElasticsearchBackend(KeyValueStoreBackend):
3131 scheme = 'http'
3232 host = 'localhost'
3333 port = 9200
34+ es_retry_on_timeout = False
35+ es_timeout = 10
36+ es_max_retries = 3
3437
3538 def __init__ (self , url = None , * args , ** kwargs ):
3639 super (ElasticsearchBackend , self ).__init__ (* args , ** kwargs )
3740 self .url = url
41+ _get = self .app .conf .get
3842
3943 if elasticsearch is None :
4044 raise ImproperlyConfigured (E_LIB_MISSING )
@@ -53,6 +57,17 @@ def __init__(self, url=None, *args, **kwargs):
5357 self .host = host or self .host
5458 self .port = port or self .port
5559
60+ self .es_retry_on_timeout = (
61+ _get ('elasticsearch_retry_on_timeout' ) or self .es_retry_on_timeout
62+ )
63+ self .es_timeout = (
64+ _get ('elasticsearch_timeout' ) or self .es_timeout
65+ )
66+
67+ self .es_max_retries = (
68+ _get ('elasticsearch_max_retries' ) or self .es_max_retries
69+ )
70+
5671 self ._server = None
5772
5873 def get (self , key ):
@@ -104,7 +119,10 @@ def delete(self, key):
104119
105120 def _get_server (self ):
106121 """Connect to the Elasticsearch server."""
107- return elasticsearch .Elasticsearch ('%s:%s' % (self .host , self .port ))
122+ return elasticsearch .Elasticsearch ('%s:%s' % (self .host , self .port ),
123+ retry_on_timeout = self .es_retry_on_timeout ,
124+ max_retries = self .es_max_retries ,
125+ timeout = self .es_timeout )
108126
109127 @property
110128 def server (self ):
0 commit comments