#!/usr/bin/env python3 import os import sentry_sdk from sentry_sdk.integrations.flask import FlaskIntegration from flask import Flask from werkzeug.middleware.proxy_fix import ProxyFix # import stuff from model import db from utils import register_all_error_handlers, storage # import views from views import SVMView, CNNView # Setup sentry SENTRY_DSN = os.environ.get("SENTRY_DSN") if SENTRY_DSN: sentry_sdk.init( dsn=SENTRY_DSN, integrations=[FlaskIntegration()], send_default_pii=True, release=os.environ.get('RELEASE_ID', 'test'), environment=os.environ.get('RELEASEMODE', 'dev') ) # create flask app app = Flask(__name__) app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1) # configure flask app app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URI', "sqlite://") # Default to memory db app.config['MINIO_ENDPOINT'] = os.environ['MINIO_ENDPOINT'] app.config['MINIO_ACCESS_KEY'] = os.environ['MINIO_ACCESS_KEY'] app.config['MINIO_SECRET_KEY'] = os.environ['MINIO_SECRET_KEY'] app.config['MINIO_SVM_BUCKET_NAME'] = os.environ.get('MINIO_SVM_BUCKET_NAME', 'svm') app.config['MINIO_CNN_BUCKET_NAME'] = os.environ.get('MINIO_CNN_BUCKET_NAME', 'cnn') app.config['MINIO_SECURE'] = os.environ.get('MINIO_SECURE', False) app.config['MINIO_REGION'] = os.environ.get('MINIO_REGION', None) # important stuff app.secret_key = os.environ.get('SECRET_KEY', os.urandom(12)) # disable this for better performance app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # initialize stuff db.init_app(app) storage.init_app(app) @app.before_first_request def create_db(): db.create_all() # register error handlers register_all_error_handlers(app) # register views for view in [SVMView, CNNView]: view.register(app, trailing_slash=False, route_prefix='/model') # start debuggig if needed if __name__ == "__main__": app.run(debug=True)