фляга StreamConsumingMiddleware больше не работает - PullRequest
0 голосов
/ 26 октября 2018

Я получаю сообщение об ошибке 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 (environment ['wsgi.input'], 0)

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

Что происходит?

1 Ответ

0 голосов
/ 28 октября 2018

Оказывается, мне просто нужно было обернуть окружение в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...