db.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import redis
  2. from proxypool.error import PoolEmptyError
  3. from proxypool.setting import HOST, PORT
  4. class RedisClient(object):
  5. def __init__(self, host=HOST, port=PORT):
  6. self._db = redis.Redis(host, port)
  7. def get(self, count=1):
  8. """
  9. get proxies from redis
  10. """
  11. proxies = self._db.lrange("proxies", 0, count - 1)
  12. self._db.ltrim("proxies", count, -1)
  13. return proxies
  14. def put(self, proxy):
  15. """
  16. add proxy to right top
  17. """
  18. self._db.rpush("proxies", proxy)
  19. def pop(self):
  20. """
  21. get proxy from right.
  22. """
  23. try:
  24. return self._db.rpop("proxies").decode('utf-8')
  25. except:
  26. raise PoolEmptyError
  27. @property
  28. def queue_len(self):
  29. """
  30. get length from queue.
  31. """
  32. return self._db.llen("proxies")
  33. def flush(self):
  34. """
  35. flush db
  36. """
  37. self._db.flushall()
  38. if __name__ == '__main__':
  39. conn = RedisClient()
  40. print(conn.pop())