redis_pool.py 1.2 KB

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