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

Tom*_*son 40 heroku flask

我有一个已部署到 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
            }
        )
Run Code Online (Sandbox Code Playgroud)

当我在本地测试此端点时,向该端点发送 POST 和 GET 请求时没有问题。但是,当我部署到 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
            }
        )
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个错误Request object has no attribute 'is_xhr',它似乎只在我部署到 Heroku 时发生。关于我应该研究什么的任何指导?

json 键似乎也没有问题keyword_data- 问题似乎仅限于query_results列表。

bag*_*ard 60

Werkzeug库(从依赖Flask)最近收到了重大更新(0.16.1 - > 1.0.0),它看起来像Flask(<= 0.12.4)不限制WERKZEUG的版本是牵强。

您有 2 个选择:

  • 坚持使用当前版本的 Flask 并通过指定werkzeug<1.0或限制在应用程序的 setup.py 或 requirements.txt 中明确获取的 Werkzeug 版本werkzeug==0.16.1

  • 升级到最新版本的 Flask (>=1.0.0),它在最新的 Werkzeug 上运行良好


小智 9

或者你可以通过调用再次强制安装bustard

pip install Werkzeug==0.16.1
Run Code Online (Sandbox Code Playgroud)