0

我的 web.py 应用程序正在运行。它接收来自外部的 POST 请求。请求标头包含transfer-encoding: chunked. 当我尝试读取数据时web.data(),进程开始消耗大量内存,几分钟后服务器死机。

transfer-encoding我对这种类型有疑问。有没有人遇到过同样的问题?

4

1 回答 1

0

实际上,这是因为只有少数被视为请求的 Web 服务器具有带有块的主体。在这种情况下,python 内部的 SimpleHTTPServer 会崩溃。龙卷风还可以,但无法使用 wsgi.input 获取正文。gevent 很好,但是 webpy 处理不正确。您可以使用这些代码解决此问题。

def data():
    if 'data' not in ctx:
        if ctx.env.get('HTTP_TRANSFER_ENCODING') == 'chunked':
            ctx.data = ctx.env['wsgi.input'].read()
        else:
            cl = intget(ctx.env.get('CONTENT_LENGTH'), 0)
            ctx.data = ctx.env['wsgi.input'].read(cl)
    return ctx.data

当然,您应该将这些代码与 gevent 一起使用。

于 2013-12-28T15:27:23.243 回答