2014-06-10 10 views
9

Während eine REST-Ressource (my_resource) in Python Schlagen, der uwsgi Server die folgenden Fehler in dem Protokoll wirft:Reparieren beschädigtes Rohr Fehler in uwsgi mit Python

SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request my_resource (ip <my_ip>) !!! 
uwsgi_response_write_body_do(): Broken pipe [core/writer.c line 164] 
IOError: write error 

Es scheint ein Timeout verwandt zu sein (der Client wurde getrennt, bevor die Anfrage die Verarbeitung beenden konnte).

Welche Art von Timeout ist das und wie kann es behoben werden?

Antwort

7

es hängt von Ihrem Frontend-Server ab. Zum Beispiel hat nginx den Parameter uwsgi_read_timeout. (im Allgemeinen auf 60 Sekunden eingestellt). Der uWSGI http Router als --http-timeout ist standardmäßig auf 60 Sekunden und so weiter eingestellt. Da Sie über eine Rest-API sprechen, bin ich ziemlich zweifelhaft, dass es mehr als 60 Sekunden dauert, um eine Antwort zu generieren. Sind Sie sicher, dass Sie keine falsche Antwort-Kopfzeile haben, die eine Verbindung in der Nähe des Frontend-Webservers auslöst?

+0

Ja, ich bin mir ziemlich sicher. Es gibt besondere Gründe, warum diese einzelne Anfrage länger dauert, um eine Antwort zu generieren, die wir im Bedarfsfall behandeln werden. Für jetzt scheint jedoch die Erhöhung der Zeitüberschreitung der richtige Weg zu sein. Vielen Dank! –

+0

Ich habe das gleiche Problem und konnte es so nicht lösen. Ich benutze Flask und ich erwarte Anfrage etwas größer, da sie Audio-Binärdaten mit variabler Dauer zwischen 2sec und 15sec bringen. Sogar mit kleinen Audio Samples, die in der Anfrage laufen, bekomme ich diese Nachricht im Fehlerprotokoll. – lithiumlab

+0

das Problem, das ich hatte, wurde behoben, OpenSSL Version 1.0.2g zu aktualisieren – lithiumlab