connection.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import rq
  2. from redis import Redis
  3. class Connection:
  4. def __init__(self, config):
  5. # redis配置信息
  6. self.redis_host = config.redis.HOST
  7. self.redis_port = config.redis.PORT
  8. self.redis_db = config.redis.DB
  9. # db配置信息
  10. self.db_host = config.database.HOST
  11. self.db_port = config.database.PORT
  12. self.db_user = config.database.USER
  13. self.db_pwd = config.database.PASSWORD
  14. self.db_db = config.database.DB
  15. def __call__(self, *args, **kwargs):
  16. redis = Redis \
  17. (
  18. host=self.redis_host,
  19. port=self.redis_port,
  20. db=self.redis_db
  21. )
  22. return rq.Connection(redis)
  23. @staticmethod
  24. def current():
  25. kwargs = rq.get_current_connection().get_connection_kwargs()
  26. kwargs["database"] = kwargs["db"]
  27. return Connection(**kwargs)
  28. @property
  29. def redis_uri(self):
  30. """获取redis的uri"""
  31. return 'redis://{}:{}/{}'.format(self.redis_host, self.redis_port, self.redis_db)
  32. @property
  33. def redis_conn(self):
  34. """获取redis的conn"""
  35. return Redis(host=self.redis_host, port=self.redis_port, db=self.redis_db, health_check_interval=30)
  36. @property
  37. def db_uri(self):
  38. """获取postgressql的uri"""
  39. return "postgresql+psycopg2://{user}:{pwd}@{host}:{port}/{db}".format(user=self.db_user,
  40. pwd=self.db_pwd,
  41. host=self.db_host,
  42. port=self.db_port,
  43. db=self.db_db)