gpt4 book ai didi

python - 使用 Pyramid 压缩所有 HTTP 流量

转载 作者:太空狗 更新时间:2023-10-29 17:38:36 25 4
gpt4 key购买 nike

我正在创建一个基于 Pyramid 框架的移动服务。因为它是移动的,所以减少带宽使用的一切都是有利的。我正在考虑压缩所有流量,甚至是动态 HTML 页面。

Pyramid 框架为此提供了什么样的钩子(Hook)?或者是否有用于该任务的 WSGI 中间件?我仍然想在 Python 级别而不是 Nginx/Apache 上执行此操作,因此我可以更好地统计 gzip 带来了多少好处。

最佳答案

首先,我要强调的是,您应该在 Web 服务器级别(nginx 或 apache)执行此操作。这有几个原因:

  1. 性能 - 如果您在 Python 中执行此操作,您正在使用您的线程之一,该线程可能正在处理执行 cpu 密集型压缩的请求。这比让优化的网络服务器处理它的效率要低得多。

  2. 阻塞 - 大多数 GZip 中间件会阻塞您的响应,缓冲正文以便它可以压缩整个响应。如果您试图将任何响应流式传输回客户端,这是一个巨大的问题,因为它会被中间件捕获。这实际上违反了 WSGI 规范 PEP333。

考虑到所有这些,至少出于开发期间的调试目的,在 Python 中执行此操作可能是有意义的。

因为您已经在使用 Pyramid,所以您已经安装了 Paste。因此,您可以像这样简单地将 paste.gzipper.GzipMiddleware 添加到应用程序的管道中:

[filter:gzip]
use = egg:Paste#gzip
compress_level = 6

[pipeline:main]
pipeline =
gzip
app

显然,如果您不想更改默认的压缩级别 6,您可以简单地将 egg:Paste#gzip 添加到管道中,而不是配置过滤器并给它一个自定义名称 (gzip)。

关于python - 使用 Pyramid 压缩所有 HTTP 流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com