def test_data_conn(): """ A simple CLI command to test the Mongo and Redis connections when in a production environment. """ if os.environ.get('FLASK_ENV', 'development') == 'production': disconnect_all() _db_name = str(os.environ.get('MONGO_APP_DB')) _host = os.environ.get('MONGO_HOST') _port = os.environ.get('MONGO_PORT') _username = os.environ.get('MONGO_APP_USER') _password = str(os.environ.get('MONGO_APP_USER_PASSWORD')) mongo_uri = (f'mongodb://{_username}:{_password}@{_host}:{_port}' f'/?authSource=admin') client = connect(db=_db_name, host=mongo_uri, alias='default', authentication_mechanism='SCRAM-SHA-1') db = get_db('default') redis_client = redis.Redis(host=os.environ.get('REDIS_HOST'), port=os.environ.get('REDIS_PORT'), password=os.environ.get('REDIS_PASSWORD')) print(f'MongoDB Client: \n{client}\n', file=sys.stderr) print(f'MongoDB Database: \n{db}\n', file=sys.stderr) print(f'Redis Datastore Client: \n{redis_client}\n', file=sys.stderr) else: print( f'This CLI command is only used for Production\nCurrent Flask ENV: ' f'{os.environ.get("FLASK_ENV")}', file=sys.stderr)
def init_db(app=None, db_name=None, host=None, port=None, alias='default') -> MongoSingleton: """Make a connection to the MongoDB container and returns a singleton wrapper on a pymongo.MongoClient.""" disconnect_all() testing = False if app is not None: db_name = app.config['MONGO_DBNAME'] host = app.config['MONGO_HOST'] port = int(app.config['MONGO_PORT']) testing = app.config['TESTING'] if env.get('FLASK_ENV') == 'production': _db_name = str(env.get('MONGO_APP_DB')) _host = env.get('MONGO_HOST') _port = env.get('MONGO_PORT') _username = env.get('MONGO_APP_USER') _password = str(env.get('MONGO_APP_USER_PASSWORD')) mongo_uri = (f'mongodb://{_username}:{_password}@{_host}:{_port}' f'/?authSource=admin') mongo_client = connect(_db_name, host=mongo_uri, alias=alias, authentication_mechanism='SCRAM-SHA-1') else: if testing: db_name = 'arc_test' mongo_client = connect(db_name, host=host, port=int(port), alias=alias) try: # This is necessary to connect at least once get_db(alias) except MongoEngineConnectionError as e: print('MongoDB Failed to Get Database.\n Error: {}'.format(e)) # Test to make sure the connection has been created. try: get_connection(alias) except MongoEngineConnectionError as e: print('MongoDB Failed to Connect.\n Error: {}'.format(e)) return MongoSingleton(mongo_client)
def tearDownClass(cls): cls._connection.drop_database(MONGO_TEST_DB) disconnect_all()
def setUpClass(cls): disconnect_all() cls._connection = connect(db=MONGO_TEST_DB) cls._connection.drop_database(MONGO_TEST_DB) cls.db = get_db()
async def close_mongo(): logger.info("Disconnecting from mongo") disconnect_all()
def shutdown_event(): from mongoengine.connection import disconnect_all logger.info('Tearing down application') disconnect_all()
def mongo(request): connection.disconnect_all() db = connect('testdb', host='mongomock://localhost') yield db db.drop_database('testdb') db.close()
def tearDownClass(cls): cls._conn.drop_database("mongoenginetest") disconnect_all()
def setUpClass(cls): disconnect_all() cls._conn = connect("mongoenginetest", host="mongomock://localhost") cls._conn.drop_database("mongoenginetest")