redis_pool.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import os.path
  2. import redis
  3. import yaml
  4. class redis_pool:
  5. instance = None
  6. def __init__(self):
  7. # 获取当前目录
  8. current_dir = os.path.dirname(__file__)
  9. # 使用相对路径访问 config.yaml 文件
  10. config_file = os.path.join(current_dir, 'config.yaml')
  11. with open(config_file, 'r') as file:
  12. config = yaml.load(file, Loader=yaml.FullLoader)
  13. lock_timeout = config['redis']['timeout']
  14. self.pool = redis.BlockingConnectionPool(host=config['redis']['host'],
  15. port=config['redis']['port'],
  16. password=config['redis']['password'],
  17. db=config['redis']['db'],
  18. decode_responses=True,
  19. max_connections=500,
  20. timeout=lock_timeout)
  21. def __get_connection(self):
  22. conn = redis.StrictRedis(connection_pool=self.pool)
  23. return conn
  24. @classmethod
  25. def get_conn(cls):
  26. if redis_pool.instance is None:
  27. redis_pool.instance = redis_pool()
  28. return redis_pool.instance.__get_connection()