2016-01-13 16 views
7

Benim django uygulaması için benim nginx + uwsgi yapılandırma ile ilgili bir sorun var, uwsgi hata günlüğünde bu hataları almaya devam: Tüm istekleri için bunları almıyorumuwsgi IOError: yazma hatası

Wed Jan 13 15:26:04 2016 - uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 296] during POST /company/get_unpaid_invoices_chart/ (86.34.48.7) IOError: write error

Wed Jan 13 15:26:20 2016 - uwsgi_response_write_headers_do(): Broken pipe [core/writer.c line 238] during GET /gestiune/print_pdf/nir/136194/ (89.122.255.186) IOError: write error

ama her dakika bir çift alırım. Bunun için aradım ve anladım çünkü nginx, uwsgi bağlantısını yanıt yazmak istediğinde uwsgi ile olan bağlantıyı kapatıyor. Bunun nedeni benim nginx yapılandırmasında tuhaf görünüyor bu var:

include uwsgi_params;

uwsgi_pass unix:/home/project/django/sbo_cloud/site.sock;

uwsgi_read_timeout 600;

uwsgi_send_timeout 600;

uwsgi_connect_timeout 60;

hata göründüğü için istek hiçbiri 600 saniye zaman aşımı aşıyor vardır eminim. Bunun neden olabileceği hakkında bir fikrin var mı?

Teşekkür

cevap

6

sorun istemcileri bağlantıyı iptal olması ardından Nginx iptal etmek uwsgi söylemeden bağlantıyı kapatır. Sonra uwsgi sonuçla geri döndüğünde soket zaten kapalı. Nginx, günlüğe 499 hatası yazar ve uwsgi bir IOError atar.

En uygun çözüm, Nginx'in soketi kapatmaması ve uwsgi'nin bir yanıtla geri gelmesini beklememesidir. nginx.config içinde

koyun bu:

uwsgi_ignore_client_abort on; 

O uwsgi bağlantısını kapatmak için Nginx anlatmak mümkün olup olmadığını net değildir. Bu konuda başka bir sorun var: (Propagate http abort/close from nginx to uwsgi/Django)