Exemple #1
0
    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
Exemple #2
0
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)
Exemple #3
0
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()