Zeitweilige Probleme beim Zugriff auf externe http-Dienste mit gevent

8

Zunächst die Versionen:

  • gevent - v0.13.7
  • gunicorn - v0.14.2
  • Anfragen - 0.11.2

Wir haben kürzlich unsere Server, die hinter Gunicorn laufen, aufgerüstet, um die gevent Asynchronous Worker anstelle von normalen Sync Workern zu verwenden. Alles funktioniert gut, aber wir haben jetzt ein Problem, wenn wir versuchen, über http auf einen Dienst eines Drittanbieters zuzugreifen, und ich habe keine Ahnung, wie ich herausfinden könnte, was das Problem sein könnte.

Ein kurzer Stack-Trace sieht wie folgt aus:

%Vor%

Ein anderer Stack-Trace, aber wir denken, es ist das gleiche Problem:

%Vor%

Zuerst dachte ich, es könnte etwas mit libevent-dns zu tun haben, von diesem Problem mit Google-Gruppen Ich habe unsere /etc/resolv.conf überprüft, und es gibt nur einen DNS-Resolution-Service:

%Vor%

Ich habe nachgeschlagen, was ERRNO66 ist: Ссылка , "/ ** Ein unbekannter Fehler ist aufgetreten */". Ich habe nicht viel Glück finden, dass hilfreich..sounds wie es konnte nicht mit dem DNS-Server sprechen?

Ich dachte, es könnte etwas mit python-requests zu tun haben, siehe Aktivierung von Async-Modus ? , da python-requests von urllib3 abhängt, was in httplib implementiert ist; aber es stellt sich heraus, dass der Autor von gevent den httplib Patch in diesem begehen Anfang dieses Jahres ohne irgendwelche Kommentare, warum.

Hat jemand irgendwelche Ideen, wie man dieses Thema debuggt oder etwas Licht auf das wirft, was hier passiert?

Vielen Dank im Voraus!

Update - 12:50 PM PDT

Nach einigen Gesprächen auf freenode scheinen der #gevent und der #gunicorn-Kanal noch mehr Einsicht zu haben:

#gevent

  • gevent v0.13.7 unterstützt weiterhin patch_all mit httplib=True
  • Ich fragte, ob "es Sinn macht, es zu patchen?", die Antwort war nein.
  • Empfehlung, gevent 1.0 zu verwenden (auch wenn es Beta ist).
  • Zitat von @schmir:

      

    "Patch httplib verwendet Libevent http Client-Bibliothek. Ich vertraue Libevent nicht. Mein Ratschlag wäre gewesen, es auszuschalten, wenn Sie es verwendet haben"

#gunicorn

  • <Damianz> Was ist deine Plattform? Ich habe gesehen, dass das Problem auf Windows-Boxen erscheint, wo es ipv6 versucht und nur das Leben versagt .. (Ich bin auf CentOS 5)
  • <dmishe> Ich habe auf Mac ähnliche gesehen, sieht aus wie gevent beta es behoben

Klingt wie der allgemeine Ratschlag ist, gevent v0.13.7 zu entfernen und auf gevent 1.0b zu aktualisieren.

Ich werde weitermachen, wenn das das Problem behebt. In der Zwischenzeit, jeder, der Rat geben kann, würde ich es sehr schätzen.

Update # 2 - 4 Tage in der Produktion, 1:15 PM PDT

Sieht so aus, als ob das Upgrade auf gevent dieses Problem gelöst hat - ich füge meine Antwort hinzu und akzeptiere sie, wenn niemand sonst reinkommt, aber erst nach einer Woche ohne Zwischenfälle in der Produktion.

    
Mahmoud Abdelkader 13.09.2012, 18:40
quelle

1 Antwort

3

Das Upgrade auf gevent 1.0b hat das Problem behoben.

    
Mahmoud Abdelkader 02.10.2012, 07:39
quelle