彗星与uwsgi和nginx,如何closures输出缓冲区?

我怎样才能防止Nginx缓冲我的uwsgi应用程序的输出? 对于我的彗星风格应用程序,我正在使用长轮询,现在请求被缓冲。

我试图减小缓冲区的大小,但是我不允许将uwsgi_buffer_sizeuwsgi_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堆栈缓冲的小延迟。