simple_storage.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from huey.api import Huey
  2. from huey.constants import EmptyData
  3. from huey.storage import BaseStorage
  4. from simpledb import Client
  5. class SimpleStorage(BaseStorage):
  6. def __init__(self, name='huey', host='127.0.0.1', port=31337,
  7. **storage_kwargs):
  8. super(SimpleStorage, self).__init__(name=name, **storage_kwargs)
  9. self.client = Client(host=host, port=port)
  10. def enqueue(self, data):
  11. self.client.lpush(self.name, data)
  12. def dequeue(self):
  13. return self.client.rpop(self.name)
  14. def unqueue(self, data):
  15. return self.client.lrem(self.name)
  16. def queue_size(self):
  17. return self.client.llen(self.name)
  18. def flush_queue(self):
  19. return self.client.lflush(self.name)
  20. def flush_all(self):
  21. return self.client.flushall()
  22. def add_to_schedule(self, data, ts):
  23. return self.client.add(str(ts), data)
  24. def read_schedule(self, ts):
  25. return self.client.read(str(ts))
  26. def schedule_size(self):
  27. return self.client.length_schedule()
  28. def flush_schedule(self):
  29. return self.client.flush_schedule()
  30. def put_data(self, key, value):
  31. return self.client.set(key, value)
  32. def peek_data(self, key):
  33. return self.client.get(key)
  34. def pop_data(self, key):
  35. return self.client.pop(key)
  36. def has_data_for_key(self, key):
  37. return self.client.exists(key)
  38. def put_if_empty(self, key, value):
  39. return self.client.setnx(key, value)
  40. def result_store_size(self, key, value):
  41. return self.client.length()
  42. def flush_results(self):
  43. return self.client.flush()
  44. class SimpleHuey(Huey):
  45. def get_storage(self, **params):
  46. return SimpleStorage(self.name, **params)