redis.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import redis
  2. from common import Material
  3. from common.odps_data import OdpsDataCount
  4. class SyncRedisHelper:
  5. _pool: redis.ConnectionPool = None
  6. _instance = None
  7. def __init__(self):
  8. if not self._instance:
  9. self._pool = self._get_pool()
  10. self._instance = self
  11. def _get_pool(self) -> redis.ConnectionPool:
  12. if self._pool is None:
  13. self._pool = redis.ConnectionPool(
  14. host="r-bp1mb0v08fqi4hjffupd.redis.rds.aliyuncs.com", # 外网地址
  15. # host="r-bp1mb0v08fqi4hjffu.redis.rds.aliyuncs.com", # 内网地址
  16. port=6379,
  17. db=0,
  18. password="Wqsd@2019",
  19. # password="Qingqu2019",
  20. )
  21. return self._pool
  22. def get_client(self) -> redis.Redis:
  23. pool = self._get_pool()
  24. client = redis.Redis(connection_pool=pool)
  25. return client
  26. def close(self):
  27. if self._pool:
  28. self._pool.disconnect(inuse_connections=True)
  29. def insert_carry_data(dt, REDIS_NAME,FS_SHEET, NAME):
  30. if NAME == "内容分析":
  31. data = OdpsDataCount.main()
  32. else:
  33. data = Material.get_carry_data(dt, FS_SHEET,NAME)
  34. if not data:
  35. return 0
  36. helper = SyncRedisHelper()
  37. client = helper.get_client()
  38. client.rpush(REDIS_NAME, *data)
  39. return len(data)
  40. def get_carry_data(REDIS_NAME):
  41. """获取一条需要打标签的视频"""
  42. helper = SyncRedisHelper()
  43. client = helper.get_client()
  44. ret = client.lpop(REDIS_NAME)
  45. return ret
  46. def in_carry_video_data(REDIS_NAME, ret):
  47. """获取/处理失败重新写入"""
  48. helper = SyncRedisHelper()
  49. client = helper.get_client()
  50. client.rpush(REDIS_NAME, str(ret))