Elastic Search HTTPConnectionPool(host='127.0.0.1', port=9200): Max retries exceeded

Habe ich einen Elastic Search server, die ich Abfrage die beide von einer live-website, und durch eine Django-management-Befehl. Die management-Befehl läuft mit Sellerie beat bei 3 Uhr GMT zur Synchronisation von Daten von einem externen Dienst. Manchmal (aber nicht immer) dieses Kommando wird ausgeführt, elastic search erscheint, abstürzt und ich bekomme die folgende Fehlermeldung in meinem error-log.

    [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)

Ich bin mit pyelasticsearch zu verbinden, Elastic Search mit dem folgenden code in meine settings.py Datei:

try:
    ES_CON
except NameError:
    ES_CON = None

if not ES_CON:
    ES_CON = ElasticSearch(ELASTICSEARCH_URI)

Jegliche Hilfe würde sehr geschätzt werden.

  • Die Ausnahme, die Sie sehen, ist aufgrund der elastic search-Instanz die Verbindung ablehnt. Es scheint, als würde entweder dein server läuft aus der verfügbaren ports zu verbinden, oder elastic search-Instanz ist zu beschäftigt, um zu akzeptieren eine Verbindung von der Django-app. Dies scheint bezeichnend, wie Sie konfiguriert ist/sind, die Verwendung von ES-Instanz.
  • Hat es zu tun mit der Art, wie ich die Verbindung zu ElasticSearch? pyelasticsearch besagt, dass es verbindungen werden automatisch die Bündelung aber ich verstehe nicht, wie könnte es anstrengend sein, die Steckdosen, wenn das der Fall war.
  • Diese nicht streng beziehen sich auf dein problem, aber ich schlage vor, Sie verwenden die offizielle python-client (elasticsearch-py), die thread-sicher und scheint zu haben eine bessere connection handling. Ich habe den Schalter von pyelasticsearch zu elasticsearch-py ziemlich leicht und habe festgestellt, dass es stabiler und schneller.
  • Danke @Erve1879 werde ich sicherlich wechseln, die über und sehen, ob es behebt Dinge.
  • deine Lösung sieht gut aus. Wenn Sie möchten, posten Sie als Antwort, dann bin ich glücklich, markieren Sie es als richtig vorausgesetzt, der Standort bleibt stabil für die nächsten 24h.
InformationsquelleAutor Prydie | 2014-01-09
Schreibe einen Kommentar