memory.py 988 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import redis
  2. from config import set_memory
  3. import datetime
  4. class Memory:
  5. def __init__(self) -> None:
  6. self.data = {}
  7. def set(self, id:str, data: str, ex:int):
  8. self.data[id] = {
  9. 'data': data,
  10. 'ex': ex,
  11. 'created': datetime.datetime.now()
  12. }
  13. def get(self, id:str):
  14. self.clear_memory()
  15. return self.data[id]['data']
  16. def is_expired(self, data) -> bool:
  17. spend = datetime.datetime.now() - data['created']
  18. if spend.seconds > data['ex']: return True
  19. return False
  20. def clear_memory(self):
  21. keys = []
  22. for k in self.data.keys():
  23. if self.is_expired(self.data[k]):
  24. keys.append(k)
  25. for k in keys:
  26. del self.data[k]
  27. if set_memory == 'self':
  28. memory = Memory()
  29. elif set_memory == 'redis':
  30. memory = redis.Redis(host='localhost', port=6379, db=0)
  31. else:
  32. print("ERROR! Settings memory in congig.py ")
  33. exit(1)