将Flask应用程序部署到Heroku时出现奇怪的“ is_xhr”错误


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列表。

Answers:


39

Werkzeug库(来自的依赖项Flask)最近收到了重大更新(0.16.1-> 1.0.0),看起来Flask(<= 0.12.4)对其没有限制。

您有2个选项:

  • 坚持使用当前的Flask版本,并限制在应用程序的setup.py或requirements.txt(werkzeug<1.0)中明确获取的Werkzeug版本。

  • 升级到最新版本的Flask(> = 1.0.0),可以在最新的Werkzeug上正常运行

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.