Lỗi lạ là lỗi_xhr Cảnh khi triển khai ứng dụng Flask lên Heroku


29

Tôi có một ứng dụng bình mà tôi đã triển khai cho Heroku, một trong những tuyến đường sau đây là

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
            }
        )

Khi tôi kiểm tra điểm cuối này cục bộ, tôi không gặp vấn đề gì khi gửi yêu cầu POST và GET đến điểm cuối đó. Tuy nhiên, khi tôi triển khai lên Heroku, tôi gặp phải lỗi sau:

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'

Tôi chưa bao giờ thấy lỗi này Request object has no attribute 'is_xhr'trước đây và nó dường như chỉ xảy ra khi tôi triển khai lên Heroku. Bất kỳ hướng dẫn về những gì tôi nên xem xét?

Dường như cũng không có vấn đề gì với khóa json keyword_data- vấn đề dường như bị giới hạn query_resultstrong danh sách.

Câu trả lời:


39

Các Werkzeugthư viện (phụ thuộc từ Flask) vừa nhận được một bản cập nhật lớn (0.16.1 -> 1.0.0) và có vẻ như Flask(<= 0.12.4) không hạn chế nó.

Bạn có 2 lựa chọn:

  • Gắn bó với phiên bản Flask hiện tại của bạn và hạn chế phiên bản Werkzeug được tìm nạp rõ ràng trong setup.py hoặc tests.txt của ứng dụng của bạn ( werkzeug<1.0)

  • Nâng cấp lên phiên bản gần đây của Flask (> = 1.0.0), phiên bản này đang chạy tốt với Werkzeug mới nhất


0

Tôi đã phải đối mặt với vấn đề này quá.

Chỉ cần tạm thời sửa bằng cách kiểm tra trực tiếp trong tiêu đề yêu cầu

request.headers.get("X-Requested-With") == "XMLHttpRequest"

không chắc điều này giúp ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.