如何关闭连接

How to close the connection

我正在将一个简单的工具集从 python 2.7 迁移到 3.5,其中一个工具是使用 web.py 的简单 Web 服务器。

不幸的是 web.py 还不能用于 3.5,所以我为此切换到 bottle.py。

根据我正在创建的接口规范,我需要关闭连接,这在 web.py 中可以很容易地通过添加以下行来完成:

web.header('Connection', 'close')

但是当我执行以下操作时,使用 bottle 我得到了 hop-by-hop headers is not allowed 的错误:

response.add_header('Connection', 'close')

如何将此 header 添加到响应中?我已经阅读了 bottle 文档,在线搜索并查看了 bottle 代码。

我不确定,所以对我写的东西持保留态度。

bottle 开发服务器是一个轻微修改的 wsgiref 服务器,它是一个轻微修改的 http.server 服务器。它没有简单的方法或配置来发送 "unusual" headers。您可以将其子类化并编写一些自定义代码。我认为覆盖 send_head 方法 (here) 并在某处包含 self.send_header("Connection", "close") 就足够了。

您可以将 bottly 与您喜欢的任何 wsgi 服务器一起使用。它内置支持相当多的服务器,但任何 wsgi 服务器都应该能够为应用程序提供服务。也许其他服务器有更简单的方法来发送自定义 header.

此外,http.server 不适用于生产,因此即使您可以让 header 正常工作,您也可能想要更改它。如果它仅供内部使用,您可能会使用它。