每次响应后,如何使WSGI服务器关闭连接?

时间:2018-12-22 19:23:14

标签: python flask bottle wsgiref

Python wsgiref module的API排除了hop-by-hop标头(在RFC 2616中定义)。

我不清楚如何使服务器在响应后终止连接(因为似乎没有添加Connection: close的方法)。

测试小型WSGI应用程序和Bottle微服务时会出现此问题。来自浏览器的开放连接阻止了curl发出的呼叫。我必须单击浏览器刷新以终止连接,以便可以处理未决的curl请求。

显然,这应该是服务器端的决定(响应后终止连接),而不是客户端的决定。我不清楚如何实施。

1 个答案:

答案 0 :(得分:0)

这实际上是在您通过其托管框架的WSGI服务器上确定的。使用bottle的最佳解决方案是通过gevent运行它。

    public void TestCompress()
    {
        string fileToCompress = @"C:\Users\gary\Downloads\BD01.DAT";
        byte[] inputBytes = File.ReadAllBytes(fileToCompress);
        var inputStream = new MemoryStream(inputBytes);

        byte[] zipBytes = new byte[38000000];   // this memory size is large enough.
        MemoryStream outStream = new MemoryStream(zipBytes);

        string compressorEnginePath = @"C:\Engine\7z.dll";
        SevenZipCompressor.SetLibraryPath(compressorEnginePath);

        compressor = new SevenZip.SevenZipCompressor();
        compressor.CompressionLevel = CompressionLevel.Fast;
        compressor.CompressionMethod = CompressionMethod.Lzma2;
        compressor.CompressStream(inputStream, outputStream);

        inputStream.Close();
        outputStream.Close();

如果不需要,您可以清除白噪声和瓶子配置,我以它们为例进行了说明,并建议您将它们用于外部。

这在每个连接上都是纯异步的。