我有一个烧瓶应用程序,已将其部署到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
,这是一个列表。
答案 0 :(得分:57)
Werkzeug
库(从Flask
开始依赖)最近进行了重大更新(0.16.1-> 1.0.0),看起来像Flask
(<= 0.12.4 )不限制获取的Werkzeug的版本。
您有2个选择:
使用当前的Flask版本粘贴,并通过指定werkzeug<1.0
或werkzeug==0.16.1
升级到最新版本的Flask(> = 1.0.0),可以在最新的Werkzeug上正常运行
答案 1 :(得分:9)
或者您可以通过致电再次强制安装the子
/**
* Invalidate the whole view. If the view is visible,
* {@link #onDraw(android.graphics.Canvas)} will be called at some point in
* the future.
* <p>
* This must be called from a UI thread. To call from a non-UI thread, call
* {@link #postInvalidate()}.
*/
public void invalidate() {
invalidate(true);
}
答案 2 :(得分:0)
我也遇到了这个问题。
只需通过直接签入请求标头即可临时修复
request.headers.get("X-Requested-With") == "XMLHttpRequest"
不确定此帮助...