def create_app():
"""Application factory, used to create application
"""
config = appconfig.AppConfig
# Init connection for elastic search
connections.create_connection(
hosts=[config.ELASTIC_SEARCH_URI], timeout=20)
app = Flask('Company API')
app.config.from_object(config)
app.debug = config.APP_DEBUG
app.db = SQLAlchemy(app)
app.migrate = Migrate(app, app.db, directory=config.MIGRATION_DIR) # this
app.mongo_db = connect(config.MONGO_DBNAME, host=config.MONGO_DATABASE_URI)
# Swagger Doc Authorization
authorizations = {
"bearer token": {
"type": "apiKey",
"in": "header",
"name": "authorization"
}
}
# Add URL Int List Converter
app.url_map.converters['list'] = ListConverter
app.url_map.converters['int_list'] = IntListConverter
app.api = Api(app, version='1', authorizations=authorizations)
app.wsgi_app = ProxyFix(app.wsgi_app)
return app
app = create_app()
@app.api.errorhandler(CompnayError)
def autods_error_handler(error):
return {'errors': error.description}, error.code
@app.api.errorhandler(Exception)
def default_error_handler(error):
code = error.code if hasattr(error, 'code') else 500
return {'errors': "{}: {}".format(type(error).__name__, str(error))}, code
При локальном запуске этого кода без Gunicron, когда происходит исключение, я получаю ответ JSON с сообщением об исключении. При запуске того же кода с Gunicorn я получаю страницу HTML вместо JSON.
Перекрывает ли Gunicorn обработчик ошибок по умолчанию? Есть ли способ переопределить это поведение?