2

是否有一个 wsgi 网络服务器可以进行渐进式传输编码:分块?IE 它应该在从应用程序接收到内容时将内容写入套接字。

我用 wsgiref、waitress 和 gunicorn 尝试了以下应用程序。他们都没有'First bit of content'马上写..

import time

def app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    def content():
        yield 'First bit of content\n'
        time.sleep(5)
        yield 'Second bit of content'
    return content()
4

2 回答 2

1

多亏了乔恩的提示,我在女服务员那里工作了:

import time


def app(environ, start_response):

    start_response('200 OK', [('Content-Type', 'text/plain')])

    def content():
        yield ''.join(('First bit of content', '.' * 18000, '\n'))
        time.sleep(5)
        yield 'Second bit of content'
    return content()

import waitress
waitress.serve(app, host='0.0.0.0', port=8080)

当数据达到 18000 字节时,waitress 将发送数据(这在您创建服务器时也可以配置。)

于 2013-08-08T10:26:23.463 回答
0

根据 WSGI 规范的定义,所有 WSGI 服务器都应该支持这一点。这是因为 WSGI 规范要求 WSGI 服务器在每个 yield 之间刷新数据,以便将其写回客户端,或者确保将数据回写到客户端并行发生并且不缓冲.

于 2013-08-08T11:07:08.303 回答