我怎样才能防止Nginx缓冲我的uwsgi应用程序的输出? 对于我的彗星风格应用程序,我正在使用长轮询,现在请求被缓冲。
我试图减小缓冲区的大小,但是我不允许将uwsgi_buffer_size
和uwsgi_buffers
设置为0.另外, uwsgi_max_temp_file_size
不起作用(尽pipe手册提示)。
我怎样才能做到这一点?
直到几分钟前,这是不可能的。 nginx将总是缓冲所有的uwsgi和scgi响应,没有configuration会改变这一点。
我已经提交了一个nginx的补丁 (并被接受),并从下一个版本有两种方法来禁用缓冲uwsgi请求:
uwsgi_buffering off
在nginxconfiguration中 X-Accel-Buffering
'标题 uwsgi从不缓冲响应,所以不需要configuration。
为什么不直接使用uwsgi-embedded http-router / load-balancer? 它没有缓冲EXE特别为彗星/ websockets应用程序。 您可以使用nginx将静态文件映射到另一个域。
试试uwsgi_max_temp_file_size = 0
Nginx的“代理”模块有一个指令,它被称为proxy_buffering on|off
,它正是你想要的,它变成缓冲closures,代理上游输出同步。 但是AFAIK既没有FastCGI也没有UWSGI模块。
顺便说一句,即使proxy_buffering
off
,您可能会注意到由于OS TCP堆栈缓冲的小延迟。