Elastic Search HTTPConnectionPool(host='127.0.0.1', port=9200):Número máximo de reintentos superado
-
21-12-2019 - |
Pregunta
Tengo una Elastic Search server que estoy consultando tanto de un sitio web en vivo y a través de comandos de administración de Django.La gestión de comandos se ejecuta utilizando el apio vencer a las 3 am GMT para sincronizar datos desde un servicio externo.A veces (pero no todo el tiempo) este comando se ejecuta elastic search parece bloquearse y me da el siguiente error en mi registro de errores.
[09/Jan/2014 08:03:46] ERROR [django.request:212] Internal Server Error: /
Traceback (most recent call last):
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/django/core/handlers/base.py",
line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/django/views/generic/base.py",
line 68, in view
return self.dispatch(request, *args, **kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/django/views/generic/base.py",
line 86, in dispatch
return handler(request, *args, **kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/django/views/generic/base.py",
line 153, in get
context = self.get_context_data(**kwargs)
File
"/srv/www/site.co.uk/clothes_comparison/clothes_comparison/views.py",
line 56, in get_context_data
fields=['id', 'name', 'price', 'images', 'advertiser']
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/pyelasticsearch/client.py",
line 96, in decorate
return func(*args, query_params=query_params, **kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/pyelasticsearch/client.py",
line 512, in multi_get
'GET', ['_mget'], {'docs': docs}, query_params=query_params)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/pyelasticsearch/client.py",
line 238, in send_request
**({'data': request_body} if body else {}))
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/requests/sessions.py",
line 347, in get
return self.request('GET', url, **kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/requests/sessions.py",
line 335, in request
resp = self.send(prep, **send_kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/requests/sessions.py",
line 438, in send
r = adapter.send(request, **kwargs)
File
"/srv/www/site.co.uk/env/local/lib/python2.7/site-packages/requests/adapters.py",
line 327, in send
raise ConnectionError(e)
ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=9200): Max
retries exceeded with url: /_mget (Caused by <class 'socket.error'>: [Errno 111]
Connection refused)
Estoy usando pyelasticsearch para conectar con Elástico de Búsqueda con el código siguiente en mi settings.py archivo:
try:
ES_CON
except NameError:
ES_CON = None
if not ES_CON:
ES_CON = ElasticSearch(ELASTICSEARCH_URI)
Cualquier ayuda sería muy apreciada.
Solución
Me gustaría sugerir el uso de la oficial de Elasticsearch cliente de python: elasticsearch-py que tiene conexión confiable de manejo, es el hilo de seguridad.También es más rápido (según el autor, que es parte de la Elasticsearch equipo).
Luego puede hacer que su es = Elasticsearch()
en la parte superior de su tasks.py
, o, por ejemplo, de core.helpers
y de importación es
a partir de ahí.