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
는 목록으로 제한됩니다 .
답변
Werkzeug
라이브러리 (에서 종속성 Flask
) 최근 주요 업데이트받은 (0.16.1 -> 1.0.0)과 같이 보인다 Flask
(<= 0.12.4)를 제한하지 않습니다.
두 가지 옵션이 있습니다.
-
현재 버전의 Flask를 사용하고 애플리케이션의 setup.py 또는 requirements.txt (
werkzeug<1.0
) 에서 명시 적으로 가져 오는 Werkzeug 버전을 제한하십시오. -
최신 Werkzeug에서 정상적으로 실행되는 최신 버전의 Flask (> = 1.0.0)로 업그레이드