ข้อผิดพลาด“ is_xhr” แปลก ๆ เมื่อปรับใช้แอพ Flask กับ Heroku


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ซึ่งเป็นรายการ

คำตอบ:


39

Werkzeugห้องสมุด (การพึ่งพาจากFlask) เมื่อเร็ว ๆ นี้ได้รับการปรับปรุงที่สำคัญ (0.16.1 -> 1.0.0) และดูเหมือนว่าFlask(<= 0.12.4) ไม่ จำกัด มัน

คุณมี 2 ตัวเลือก:

  • ติดกับ Flask เวอร์ชันปัจจุบันของคุณและ จำกัด รุ่น Werkzeug ที่ดึงมาอย่างชัดเจนใน setup.py หรือ requirements.txt ของแอปพลิเคชันของคุณ ( werkzeug<1.0)

  • อัปเกรดเป็น Flask รุ่นล่าสุด (> = 1.0.0) ซึ่งใช้งานได้ดีกับ Werkzeug ล่าสุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.