|
@@ -30,11 +30,8 @@ class ResultConsumer(Consumer):
|
|
|
no_ack = True
|
|
|
auto_delete = False
|
|
|
|
|
|
- def __init__(self, connection, task_id, expires=None, **kwargs):
|
|
|
+ def __init__(self, connection, task_id, **kwargs):
|
|
|
routing_key = task_id.replace("-", "")
|
|
|
- if expires is not None:
|
|
|
- pass
|
|
|
- #self.queue_arguments = {"x-expires": expires}
|
|
|
super(ResultConsumer, self).__init__(connection,
|
|
|
queue=routing_key, routing_key=routing_key, **kwargs)
|
|
|
|
|
@@ -57,6 +54,7 @@ class AMQPBackend(BaseDictBackend):
|
|
|
super(AMQPBackend, self).__init__(**kwargs)
|
|
|
conf = self.app.conf
|
|
|
self._connection = connection
|
|
|
+ self.queue_arguments = {}
|
|
|
self.exchange = exchange or conf.CELERY_RESULT_EXCHANGE
|
|
|
self.exchange_type = exchange_type or conf.CELERY_RESULT_EXCHANGE_TYPE
|
|
|
if persistent is None:
|
|
@@ -66,11 +64,13 @@ class AMQPBackend(BaseDictBackend):
|
|
|
self.auto_delete = auto_delete
|
|
|
self.expires = expires
|
|
|
if self.expires is None:
|
|
|
- self.expires = conf.CELERY_TASK_RESULT_EXPIRES
|
|
|
+ self.expires = conf.CELERY_AMQP_TASK_RESULT_EXPIRES
|
|
|
if isinstance(self.expires, timedelta):
|
|
|
self.expires = timeutils.timedelta_seconds(self.expires)
|
|
|
if self.expires is not None:
|
|
|
self.expires = int(self.expires)
|
|
|
+ # WARNING: Requires RabbitMQ 2.1.0 or higher.
|
|
|
+ self.queue_arguments["x-expires"] = self.expires
|
|
|
|
|
|
def _create_publisher(self, task_id, connection):
|
|
|
delivery_mode = self.persistent and 2 or 1
|
|
@@ -92,7 +92,7 @@ class AMQPBackend(BaseDictBackend):
|
|
|
exchange_type=self.exchange_type,
|
|
|
durable=self.persistent,
|
|
|
auto_delete=self.auto_delete,
|
|
|
- expires=self.expires)
|
|
|
+ queue_arguments=self.queue_arguments)
|
|
|
|
|
|
def store_result(self, task_id, result, status, traceback=None,
|
|
|
max_retries=20, retry_delay=0.2):
|