source file: /opt/devel/celery/celery/messaging.py
file stats: 29 lines, 29 executed: 100.0% covered
1. from carrot.messaging import Publisher, Consumer 2. from celery import conf 3. import uuid 4. 5. 6. class NoProcessConsumer(Consumer): 7. 8. def receive(self, message_data, message): 9. raise NotImplementedError( 10. "Don't use process_next() or wait() with the TaskConsumer!") 11. 12. 13. class TaskPublisher(Publisher): 14. exchange = conf.AMQP_EXCHANGE 15. routing_key = conf.AMQP_ROUTING_KEY 16. 17. def delay_task(self, task_name, **task_kwargs): 18. return self._delay_task(task_name=task_name, extra_data=task_kwargs) 19. 20. def delay_task_in_set(self, task_name, taskset_id, task_kwargs): 21. return self._delay_task(task_name=task_name, part_of_set=taskset_id, 22. extra_data=task_kwargs) 23. 24. def _delay_task(self, task_name, part_of_set=None, extra_data=None): 25. extra_data = extra_data or {} 26. task_id = str(uuid.uuid4()) 27. message_data = dict(extra_data) 28. message_data["celeryTASK"] = task_name 29. message_data["celeryID"] = task_id 30. if part_of_set: 31. message_data["celeryTASKSET"] = part_of_set 32. self.send(message_data) 33. return task_id 34. 35. 36. class TaskConsumer(NoProcessConsumer): 37. queue = conf.AMQP_CONSUMER_QUEUE 38. exchange = conf.AMQP_EXCHANGE 39. routing_key = conf.AMQP_ROUTING_KEY