Дивна помилка "is_xhr" під час розгортання програми Flask в Heroku


29

У мене є фляга-додаток, який я розгорнув у Heroku, один із маршрутів наступний

def get_kws():
    seed_kw = request.json['firstParam']
    audience_max = request.json['secondParam']
    interest_mining_service = InterestMiningService(seed_kw, audience_max)
    query_result = interest_mining_service.query_keyword().tolist()
    if seed_kw in query_result:
        print ("yes")
        return jsonify(
            {
             'keyword_data' : interest_mining_service.find_kws().to_json(orient='records'),
             'query_results': query_result
            }
        )

Коли я тестую цю кінцеву точку локально, у мене немає проблем при надсиланні запитів POST та GET до цієї кінцевої точки. Однак, коли я розгортаюся до Heroku, я отримую таку помилку:

File "/app/server/controller.py", line 24, in get_kws
2020-02-08T22:31:05.893850+00:00 app[web.1]: 'query_results': query_result
2020-02-08T22:31:05.893850+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/json.py", line 298, in jsonify
2020-02-08T22:31:05.893851+00:00 app[web.1]: if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr:
2020-02-08T22:31:05.893851+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
2020-02-08T22:31:05.893852+00:00 app[web.1]: return getattr(self._get_current_object(), name)
2020-02-08T22:31:05.893858+00:00 app[web.1]: AttributeError: 'Request' object has no attribute 'is_xhr'

Я ніколи не бачив цієї помилки Request object has no attribute 'is_xhr' і, здається, це відбувається лише тоді, коли я розгортаюсь до Heroku. Будь-які вказівки щодо того, на що я повинен звернути увагу?

Здається, також немає проблеми з ключем json keyword_data- проблема, здається, обмежена query_resultsсписком.

Відповіді:


39

Нещодавно Werkzeugбібліотека (залежність від Flask) отримала основне оновлення (0.16.1 -> 1.0.0), і схоже, що Flask(<= 0,12.4) не обмежує її.

У вас є 2 варіанти:

  • Дотримуйтесь вашої поточної версії Flask і обмежте версію Werkzeug, яка явно виведена у програмі setup.py або вимог.txt ( werkzeug<1.0)

  • Оновіть до останньої версії Flask (> = 1.0.0), яка добре працює з останнім Werkzeug

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.