import rq from redis import Redis class Connection: def __init__(self, config): # redis配置信息 self.redis_host = config.redis.HOST self.redis_port = config.redis.PORT self.redis_db = config.redis.DB # db配置信息 self.db_host = config.database.HOST self.db_port = config.database.PORT self.db_user = config.database.USER self.db_pwd = config.database.PASSWORD self.db_db = config.database.DB def __call__(self, *args, **kwargs): redis = Redis \ ( host=self.redis_host, port=self.redis_port, db=self.redis_db ) return rq.Connection(redis) @staticmethod def current(): kwargs = rq.get_current_connection().get_connection_kwargs() kwargs["database"] = kwargs["db"] return Connection(**kwargs) @property def redis_uri(self): """获取redis的uri""" return 'redis://{}:{}/{}'.format(self.redis_host, self.redis_port, self.redis_db) @property def redis_conn(self): """获取redis的conn""" return Redis(host=self.redis_host, port=self.redis_port, db=self.redis_db, health_check_interval=30) @property def db_uri(self): """获取postgressql的uri""" return "postgresql+psycopg2://{user}:{pwd}@{host}:{port}/{db}".format(user=self.db_user, pwd=self.db_pwd, host=self.db_host, port=self.db_port, db=self.db_db)