Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

memory.py 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. """
  2. kombu.transport.memory
  3. ======================
  4. In-memory transport.
  5. """
  6. from __future__ import absolute_import
  7. from kombu.five import Queue, values
  8. from . import virtual
  9. class Channel(virtual.Channel):
  10. queues = {}
  11. do_restore = False
  12. supports_fanout = True
  13. def _has_queue(self, queue, **kwargs):
  14. return queue in self.queues
  15. def _new_queue(self, queue, **kwargs):
  16. if queue not in self.queues:
  17. self.queues[queue] = Queue()
  18. def _get(self, queue, timeout=None):
  19. return self._queue_for(queue).get(block=False)
  20. def _queue_for(self, queue):
  21. if queue not in self.queues:
  22. self.queues[queue] = Queue()
  23. return self.queues[queue]
  24. def _queue_bind(self, *args):
  25. pass
  26. def _put_fanout(self, exchange, message, routing_key=None, **kwargs):
  27. for queue in self._lookup(exchange, routing_key):
  28. self._queue_for(queue).put(message)
  29. def _put(self, queue, message, **kwargs):
  30. self._queue_for(queue).put(message)
  31. def _size(self, queue):
  32. return self._queue_for(queue).qsize()
  33. def _delete(self, queue, *args):
  34. self.queues.pop(queue, None)
  35. def _purge(self, queue):
  36. q = self._queue_for(queue)
  37. size = q.qsize()
  38. q.queue.clear()
  39. return size
  40. def close(self):
  41. super(Channel, self).close()
  42. for queue in values(self.queues):
  43. queue.empty()
  44. self.queues = {}
  45. def after_reply_message_received(self, queue):
  46. pass
  47. class Transport(virtual.Transport):
  48. Channel = Channel
  49. #: memory backend state is global.
  50. state = virtual.BrokerState()
  51. driver_type = 'memory'
  52. driver_name = 'memory'
  53. def driver_version(self):
  54. return 'N/A'