将 Flask 应用程序部署到 Heroku 时出现奇怪的“is_xhr”错误
Posted
技术标签:
【中文标题】将 Flask 应用程序部署到 Heroku 时出现奇怪的“is_xhr”错误【英文标题】:Weird "is_xhr" error when deploying Flask app to Heroku 【发布时间】:2020-05-24 16:18:18 【问题描述】:我有一个已部署到 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
这是一个列表。
【问题讨论】:
【参考方案1】:Werkzeug
库(依赖于 Flask
)最近收到了重大更新(0.16.1 --> 1.0.0),看起来Flask
(
你有两个选择:
坚持使用当前版本的 Flask,并通过指定 werkzeug<1.0
或 werkzeug==0.16.1
来限制在应用程序的 setup.py 或 requirements.txt 中显式获取的 Werkzeug 版本
升级到最新版本的 Flask (>=1.0.0),在最新的 Werkzeug 上运行良好
【讨论】:
将此werkzeug==0.16.1
添加到 requirements.txt 解决了这个问题。谢谢
我的烧瓶 (1.1.2) 和 Werkzeug (1.0.1)。无论如何,我有同样的错误。【参考方案2】:
我也遇到过这个问题。
只是通过直接签入请求头来临时修复
request.headers.get("X-Requested-With") == "XMLHttpRequest"
不确定是否有帮助...
【讨论】:
【参考方案3】:或者你可以通过调用再次强制安装鸨
pip install Werkzeug==0.16.1
【讨论】:
以上是关于将 Flask 应用程序部署到 Heroku 时出现奇怪的“is_xhr”错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试将流式应用程序部署到 Heroku 时出现 AttributeError
尝试将 Rails 应用程序部署到 heroku 时出现 Uglifier 错误
运行“工头启动”/将 Django 应用程序部署到 Heroku 时出现问题