Проблема с возвратом исключения не-http в приложении flask - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь реализовать некоторую обобщенную c обработку ошибок в моем приложении flask, но я получаю эту ошибку в консоли во время отладки.

TypeError: Функция просмотра не смогла вернуть правильный ответ. Функция либо вернула None, либо завершилась без оператора return.

Мое flask приложение выглядит как

import json
import os
import sys

from flask import Flask, request, Response, render_template, jsonify

from werkzeug.utils import secure_filename
from werkzeug import exceptions

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = r'tmp'
app.config['ALLOWED_EXTENSIONS'] = set(['jpg', 'jpeg'])


def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']

@app.errorhandler(Exception)
def handle_exception(e):
    code = 500
    if isinstance(e, exceptions.HTTPException):
        code = e.code

    response = app.response_class(
        response=json.dumps("test"),
        status=code,
        mimetype='application/json'
    )
    return response


@app.route("/ocr", methods=['POST'])
def ocr():

    try:
        result = []
        file = request.files['file']
        keyvalue = {}

        filename = secure_filename(file.filename)

        # check for supported file types
        extension = os.path.splitext(filename)[1].lstrip('.').lower()
        if extension in app.config['ALLOWED_EXTENSIONS']:

            img = os.path.join(app.config['UPLOAD_FOLDER'], filename)

            file.save(img)

            if extension == 'pdf':
        # ...
        # code
        # ...
                return json.dumps(result)
            else:
        # ...
        # code
        # ...
                return json.dumps(result)
        else:
            raise Exception("File type unsupported")

    except Exception as error:
        handle_exception(error)


if __name__ == "__main__":
    app.run(host='0.0.0.0', port="5050", debug=True)

Я не хочу шаблон HTML, потому что служба использует этот сервис (не нужно ничего отображать в браузере). Я хочу вернуть json ответ с кодом ошибки и сообщением об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...