redis_pool.py 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import redis
  2. import yaml
  3. class redis_pool:
  4. instance = None
  5. def __init__(self):
  6. # 读取 YAML 文件
  7. with open('config.yaml', 'r') as file:
  8. config = yaml.load(file, Loader=yaml.FullLoader)
  9. lock_timeout = config['redis']['timeout']
  10. self.pool = redis.BlockingConnectionPool(host=config['redis']['host'],
  11. port=config['redis']['port'],
  12. password=config['redis']['password'],
  13. db=config['redis']['db'],
  14. decode_responses=True,
  15. max_connections=6,
  16. timeout=lock_timeout)
  17. def __get_connection(self):
  18. conn = redis.StrictRedis(connection_pool=self.pool)
  19. return conn
  20. @classmethod
  21. def get_conn(cls):
  22. if redis_pool.instance is None:
  23. redis_pool.instance = redis_pool()
  24. return redis_pool.instance.__get_connection()