Zunächst die Versionen:
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:
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
Hat jemand irgendwelche Ideen, wie man dieses Thema debuggt oder etwas Licht auf das wirft, was hier passiert?
Vielen Dank im Voraus!
Nach einigen Gesprächen auf freenode scheinen der #gevent und der #gunicorn-Kanal noch mehr Einsicht zu haben:
patch_all
mit httplib=True
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"
<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.
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.
Tags und Links python exception gunicorn gevent python-requests