金字塔流响应体

金字塔流响应体,第1张

金字塔流响应

我发现了问题。原来我的应用程序代码很好,问题出在Waitress和nginx上:

  1. Pyramid使用的默认Web服务器Waitress以18000字节的块缓冲所有输出(有关详细信息,请参阅此问题)。

  2. 问题的根源是我放在Pyramid应用程序前面的Web服务器nginx对我隐藏的,该服务器 缓冲响应。

(1)可以通过以下任一方法解决:

  • send_bytes = 1
    在.ini文件中配置的女服务员。这种修复的流问题,但让你的整个应用 慢。正如@Zitrax所提到的,您可以使用较高的值恢复某些速度,但是任何大于1的值都有可能使消息卡在缓冲区中。

  • 切换到Gunicorn。我不知道gunicorn是否仅使用较小的缓冲区,或者使用时,它的性能是否更好

    app_iter
    ,但是它可以正常工作,并保持我的应用程序快速运行。

(2)可以通过配置nginx禁用流路由缓冲来解决。

您需要

proxy_buffering off
在nginx
conf中进行设置。此设置适用于通过托管的网站
proxy_pass
。如果您不使用
proxy_pass
,则可能需要其他设置。

  • 您可以将nginx配置为基于请求标头为每个响应动态启用/禁用缓冲,如本主题中的问题所示(EventSource / Server-Sent Events的良好解决方案)

  • 您也可以

    location
    在nginx conf中的一个块中配置它。如果您使用的是EventSource以外的东西,并且不希望收到特定的标头,或者如果您使用的是EventSource,但想从普通的浏览器选项卡中调试响应,而无法发送
    Accept
    标头,则这样做很好根据您的要求。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5673423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存