Ejemplo n.º 1
0
def create_app():
    """
    Creates the flask app
    :return: Delayed jobs flask app
    """

    base_path = RUN_CONFIG.get('base_path', '')
    outputs_base_path = RUN_CONFIG.get('outputs_base_path', 'outputs')
    flask_app = Flask(__name__,
                      static_url_path=f'{base_path}/{outputs_base_path}',
                      static_folder=job_submission_service.JOBS_OUTPUT_DIR)

    # flask_app.config['SERVER_NAME'] = RUN_CONFIG.get('server_public_host')
    flask_app.config['SQLALCHEMY_DATABASE_URI'] = RUN_CONFIG.get(
        'sql_alchemy').get('database_uri')
    flask_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = RUN_CONFIG.get(
        'sql_alchemy').get('track_modifications')
    flask_app.config['SECRET_KEY'] = RUN_CONFIG.get('server_secret_key')

    enable_cors = RUN_CONFIG.get('enable_cors', False)

    if enable_cors:
        CORS(flask_app)

    with flask_app.app_context():
        DB.init_app(flask_app)
        CACHE.init_app(flask_app)
        RATE_LIMITER.init_app(flask_app)

        for handler in flask_app.logger.handlers:
            RATE_LIMITER.logger.addHandler(handler)

        create_tables = RUN_CONFIG.get('sql_alchemy').get(
            'create_tables', False)
        if create_tables:
            DB.create_all()

        generate_default_config = RUN_CONFIG.get('generate_default_config',
                                                 False)
        if generate_default_config:
            delayed_job_models.generate_default_job_configs()

        flask_app.register_blueprint(SWAGGER_BLUEPRINT,
                                     url_prefix=f'{base_path}/swagger')
        flask_app.register_blueprint(SUBMISSION_BLUEPRINT,
                                     url_prefix=f'{base_path}/submit')
        flask_app.register_blueprint(JOB_STATUS_BLUEPRINT,
                                     url_prefix=f'{base_path}/status')
        flask_app.register_blueprint(ADMIN_AUTH_BLUEPRINT,
                                     url_prefix=f'{base_path}/admin')
        flask_app.register_blueprint(ADMIN_TASKS_BLUEPRINT,
                                     url_prefix=f'{base_path}/admin')
        flask_app.register_blueprint(
            CUSTOM_STATISTICS_BLUEPRINT,
            url_prefix=f'{base_path}/custom_statistics')

        return flask_app
Ejemplo n.º 2
0
from app.db import DB
from app.app import create_app
from app.models import seed_test_data

if __name__ == "__main__":
    DB.app = create_app()
    DB.create_all()