def get_instance(cls, use_flask=True, flask_app=None): if not cls.__instance: name = flask_app.import_name if flask_app else __name__ broker_url = make_url( ConfigManager.get_config_value("celery", "broker")) results_backend_url = make_url( ConfigManager.get_config_value("celery", "results_backend")) celery = Celery( name, broker=broker_url, backend=results_backend_url, ) if use_flask: if use_flask and not cls.__flask_app: from app.app_factory import make_flask flask_app = flask_app or make_flask() flask_app.config.update( CELERY_BROKER_URL=broker_url, CELERY_RESULT_BACKEND=results_backend_url, ) cls.__flask_app = flask_app celery.conf.update(cls.__flask_app.config) class ContextTask(celery.Task): def __call__(self, *args, **kwargs): with flask_app.app_context(): return self.run(*args, **kwargs) celery.Task = ContextTask cls.__instance = celery return cls.__instance
def config_database(flask_app, config): module_name = "database." + next(iter(config.keys())) module = import_module(module_name) db = getattr(module, "db") db_config = getattr(module, "db_config") if db_config["type"] in sqlalchemy_backends: flask_app.config["SQLALCHEMY_DATABASE_URI"] = make_url(db_config) flask_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True db.init_app(flask_app)
def make_db(db_config=ConfigManager.get_config_value("database", "mongo")): return MongoClient(make_url(db_config, include_db=False), connect=False)[db_config["db"]]
# pylint: disable=import-error # pylint: disable=no-name-in-module from flask_migrate import Migrate, MigrateCommand from flask_script import Manager from sqlalchemy import create_engine from sqlalchemy_utils import database_exists, create_database from app.app_factory import make_flask from database.postgres import db_config, db from utils.common import make_url # Import all your models here: from models.generic import GenericModel app = make_flask() migrate = Migrate(app, db) manager = Manager(app) manager.add_command("db", MigrateCommand) engine = create_engine(make_url(db_config)) if not database_exists(engine.url): create_database(engine.url) if __name__ == "__main__": manager.run()