烧瓶StreamConsumingMiddleware不再起作用

时间:2018-10-26 04:19:03

标签: python flask

我的Flask应用程序中出现KeyError:'CONTENT_LENGTH'错误。我什么都没改变。实际上,我让项目搁置了8个月,然后格式化了硬盘,因此我正在下载Flask-wtf等的所有最新库。有问题的代码在这里

 def __call__(self, environ, start_response):
    stream = LimitedStream(environ['wsgi.input'],
                           int(environ['CONTENT_LENGTH'] or 0))
    environ['wsgi.input'] = stream
    app_iter = self.app(environ, start_response)
    try:
        stream.exhaust()
        for event in app_iter:
            yield event
    finally:
        if hasattr(app_iter, 'close'):
            app_iter.close()

我不知道我们将LimtedStream用于什么。我是两年前添加的。有a bit about it here。如果我将行更改为以下内容:

  

stream = LimitedStream(environ ['wsgi.input'],0)

主页已加载,但我所有的帖子表单都停止工作,并且在发布任何内容时出现400错误。

这是怎么回事?

1 个答案:

答案 0 :(得分:1)

事实证明,我只需要将环境包裹在try catch中。所以,我做了这样的事情:

try:
       cont_len = int(environ['CONTENT_LENGTH'] or 0) 
except Exception as e:
       cont_len = 0

stream = LimitedStream(environ['wsgi.input'], cont_len)