Flask streamconsumingmiddleware больше не работает

Я получаю ошибку KeyError: «CONTENT_LENGTH» в моем приложении Flask. Я ничего не менял. На самом деле, я оставил проект на 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. Я добавил это два года назад. Есть немного об этом здесь. Если я изменю строку на следующую:

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

Домашняя страница загружается, но все мои формы сообщений перестают работать, и я получаю 400 ошибок при публикации чего-либо.

Что здесь происходит?

0
0
109
1

Ответы 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)

Другие вопросы по теме