Exemplo n.º 1
0
    def __init__(self,
                 app,
                 connection=None,
                 exchange=None,
                 exchange_type=None,
                 persistent=None,
                 serializer=None,
                 auto_delete=True,
                 **kwargs):
        super(AMQPBackend, self).__init__(app, **kwargs)
        conf = self.app.conf
        self._connection = connection
        self.persistent = (conf.CELERY_RESULT_PERSISTENT
                           if persistent is None else persistent)
        exchange = exchange or conf.CELERY_RESULT_EXCHANGE
        exchange_type = exchange_type or conf.CELERY_RESULT_EXCHANGE_TYPE
        self.exchange = self._create_exchange(exchange, exchange_type,
                                              self.persistent)
        self.serializer = serializer or conf.CELERY_RESULT_SERIALIZER
        self.auto_delete = auto_delete

        self.expires = None
        if 'expires' not in kwargs or kwargs['expires'] is not None:
            self.expires = self.prepare_expires(kwargs.get('expires'))
        self.queue_arguments = dictfilter({
            'x-expires':
            maybe_s_to_ms(self.expires),
        })
        self.mutex = threading.Lock()
Exemplo n.º 2
0
def _add_optparse_argument(
    parser,
    opt,
    typemap={"string": text_t, "int": int, "long": long_t, "float": float, "complex": complex, "choice": None},
):
    if opt.callback:
        opt.type = _optparse_callback_to_type(opt, opt.type)
    # argparse checks for existence of this kwarg
    if opt.action == "callback":
        opt.action = None
    # store_true sets value to "('NO', 'DEFAULT')" for some
    # crazy reason, so not to set a sane default here.
    if opt.action == "store_true" and opt.default is None:
        opt.default = False
    parser.add_argument(
        *opt._long_opts + opt._short_opts,
        **dictfilter(
            dict(
                action=opt.action,
                type=typemap.get(opt.type, opt.type),
                dest=opt.dest,
                nargs=opt.nargs,
                choices=opt.choices,
                help=opt.help,
                metavar=opt.metavar,
                default=opt.default,
            )
        )
    )
Exemplo n.º 3
0
def _add_optparse_argument(parser, opt, typemap={
        'string': text_t,
        'int': int,
        'long': long_t,
        'float': float,
        'complex': complex,
        'choice': None}):
    if opt.callback:
        opt.type = _optparse_callback_to_type(opt, opt.type)
    # argparse checks for existence of this kwarg
    if opt.action == 'callback':
        opt.action = None
    # store_true sets value to "('NO', 'DEFAULT')" for some
    # crazy reason, so not to set a sane default here.
    if opt.action == 'store_true' and opt.default is None:
        opt.default = False
    parser.add_argument(
        *opt._long_opts + opt._short_opts,
        **dictfilter({
            'action': opt.action,
            'type': typemap.get(opt.type, opt.type),
            'dest': opt.dest,
            'nargs': opt.nargs,
            'choices': opt.choices,
            'help': opt.help,
            'metavar': opt.metavar,
            'default': opt.default}))
Exemplo n.º 4
0
Arquivo: rpc.py Projeto: bryson/celery
 def __init__(
     self,
     app,
     connection=None,
     exchange=None,
     exchange_type=None,
     persistent=None,
     serializer=None,
     auto_delete=True,
     **kwargs
 ):
     super(BaseRPCBackend, self).__init__(app, **kwargs)
     conf = self.app.conf
     self._connection = connection
     self._out_of_band = {}
     self.persistent = self.prepare_persistent(persistent)
     self.delivery_mode = 2 if self.persistent else 1
     exchange = exchange or conf.result_exchange
     exchange_type = exchange_type or conf.result_exchange_type
     self.exchange = self._create_exchange(exchange, exchange_type, self.delivery_mode)
     self.serializer = serializer or conf.result_serializer
     self.auto_delete = auto_delete
     self.queue_arguments = dictfilter({"x-expires": maybe_s_to_ms(self.expires)})
     self.result_consumer = self.ResultConsumer(
         self, self.app, self.accept, self._pending_results, self._pending_messages
     )
     if register_after_fork is not None:
         register_after_fork(self, _on_after_fork_cleanup_backend)
Exemplo n.º 5
0
def _add_optparse_argument(parser, opt, typemap=None):
    typemap = ({
        "string": text_t,
        "int": int,
        "long": long_t,
        "float": float,
        "complex": complex,
        "choice": None,
    } if not typemap else typemap)
    if opt.callback:
        opt.type = _optparse_callback_to_type(opt, opt.type)
    # argparse checks for existence of this kwarg
    if opt.action == "callback":
        opt.action = None
    # store_true sets value to "('NO', 'DEFAULT')" for some
    # crazy reason, so not to set a sane default here.
    if opt.action == "store_true" and opt.default is None:
        opt.default = False
    parser.add_argument(
        *opt._long_opts + opt._short_opts,
        **dictfilter({
            "action": opt.action,
            "type": typemap.get(opt.type, opt.type),
            "dest": opt.dest,
            "nargs": opt.nargs,
            "choices": opt.choices,
            "help": opt.help,
            "metavar": opt.metavar,
            "default": opt.default,
        }))
Exemplo n.º 6
0
    def _params_from_url(self, url, defaults):
        scheme, host, port, user, password, path, query = _parse_url(url)
        connparams = dict(
            defaults, **dictfilter({
                'host': host, 'port': port, 'password': password,
                'db': query.pop('virtual_host', None)})
        )

        if scheme == 'socket':
            # use 'path' as path to the socket… in this case
            # the database number should be given in 'query'
            connparams.update({
                'connection_class': self.redis.UnixDomainSocketConnection,
                'path': '/' + path,
            })
            # host+port are invalid options when using this connection type.
            connparams.pop('host', None)
            connparams.pop('port', None)
        else:
            connparams['db'] = path

        # db may be string and start with / like in kombu.
        db = connparams.get('db') or 0
        db = db.strip('/') if isinstance(db, string_t) else db
        connparams['db'] = int(db)

        # Query parameters override other parameters
        connparams.update(query)
        return connparams
Exemplo n.º 7
0
    def _params_from_url(self, url, defaults):
        scheme, host, port, user, password, path, query = _parse_url(url)
        connparams = dict(
            defaults,
            **dictfilter({
                'host': host,
                'port': port,
                'password': password,
                'db': query.pop('virtual_host', None)
            }))

        if scheme == 'socket':
            # use 'path' as path to the socket… in this case
            # the database number should be given in 'query'
            connparams.update({
                'connection_class': self.redis.UnixDomainSocketConnection,
                'path': '/' + path,
            })
            # host+port are invalid options when using this connection type.
            connparams.pop('host', None)
            connparams.pop('port', None)
        else:
            connparams['db'] = path

        # db may be string and start with / like in kombu.
        db = connparams.get('db') or 0
        db = db.strip('/') if isinstance(db, string_t) else db
        connparams['db'] = int(db)

        # Query parameters override other parameters
        connparams.update(query)
        return connparams
Exemplo n.º 8
0
 def __init__(self,
              app,
              connection=None,
              exchange=None,
              exchange_type=None,
              persistent=None,
              serializer=None,
              auto_delete=True,
              **kwargs):
     super(AMQPBackend, self).__init__(app, **kwargs)
     conf = self.app.conf
     self._connection = connection
     self.persistent = self.prepare_persistent(persistent)
     self.delivery_mode = 2 if self.persistent else 1
     exchange = exchange or conf.result_exchange
     exchange_type = exchange_type or conf.result_exchange_type
     self.exchange = self._create_exchange(
         exchange,
         exchange_type,
         self.delivery_mode,
     )
     self.serializer = serializer or conf.result_serializer
     self.auto_delete = auto_delete
     self.queue_arguments = dictfilter({
         'x-expires':
         maybe_s_to_ms(self.expires),
     })
     self.result_consumer = self.ResultConsumer(self, self.app, self.accept,
                                                self._pending_results)
     if register_after_fork is not None:
         register_after_fork(self, _on_after_fork_cleanup_backend)
Exemplo n.º 9
0
    def __init__(
        self,
        app,
        connection=None,
        exchange=None,
        exchange_type=None,
        persistent=None,
        serializer=None,
        auto_delete=True,
        **kwargs
    ):
        super(AMQPBackend, self).__init__(app, **kwargs)
        conf = self.app.conf
        self._connection = connection
        self.persistent = self.prepare_persistent(persistent)
        self.delivery_mode = 2 if self.persistent else 1
        exchange = exchange or conf.CELERY_RESULT_EXCHANGE
        exchange_type = exchange_type or conf.CELERY_RESULT_EXCHANGE_TYPE
        self.exchange = self._create_exchange(exchange, exchange_type, self.delivery_mode)
        self.serializer = serializer or conf.CELERY_RESULT_SERIALIZER
        self.auto_delete = auto_delete

        self.expires = None
        if "expires" not in kwargs or kwargs["expires"] is not None:
            self.expires = self.prepare_expires(kwargs.get("expires"))
        self.queue_arguments = dictfilter({"x-expires": maybe_s_to_ms(self.expires)})
Exemplo n.º 10
0
 def __init__(self,
              app,
              connection=None,
              exchange=None,
              exchange_type=None,
              persistent=None,
              serializer=None,
              auto_delete=True,
              **kwargs):
     deprecated.warn(
         'The AMQP result backend',
         deprecation='4.0',
         removal='5.0',
         alternative='Please use RPC backend or a persistent backend.')
     super(AMQPBackend, self).__init__(app, **kwargs)
     conf = self.app.conf
     self._connection = connection
     self.persistent = self.prepare_persistent(persistent)
     self.delivery_mode = 2 if self.persistent else 1
     exchange = exchange or conf.result_exchange
     exchange_type = exchange_type or conf.result_exchange_type
     self.exchange = self._create_exchange(
         exchange,
         exchange_type,
         self.delivery_mode,
     )
     self.serializer = serializer or conf.result_serializer
     self.auto_delete = auto_delete
     self.queue_arguments = dictfilter({
         'x-expires':
         maybe_s_to_ms(self.expires),
     })
Exemplo n.º 11
0
 def __init__(self,
              app,
              connection=None,
              exchange=None,
              exchange_type=None,
              persistent=None,
              serializer=None,
              auto_delete=True,
              **kwargs):
     super(AMQPBackend, self).__init__(app, **kwargs)
     conf = self.app.conf
     self._connection = connection
     self.persistent = self.prepare_persistent(persistent)
     self.delivery_mode = 2 if self.persistent else 1
     exchange = exchange or conf.result_exchange
     exchange_type = exchange_type or conf.result_exchange_type
     self.exchange = self._create_exchange(
         exchange,
         exchange_type,
         self.delivery_mode,
     )
     self.serializer = serializer or conf.result_serializer
     self.auto_delete = auto_delete
     self.queue_arguments = dictfilter({
         'x-expires':
         maybe_s_to_ms(self.expires),
     })
Exemplo n.º 12
0
    def _params_from_url(self, url, defaults):
        scheme, host, port, _, password, path, query = _parse_url(url)
        connparams = dict(
            defaults,
            **dictfilter({
                "host": host,
                "port": port,
                "password": password,
                "db": query.pop("virtual_host", None),
            }))

        if scheme == "socket":
            # use 'path' as path to the socket… in this case
            # the database number should be given in 'query'
            connparams.update({
                "connection_class": self.redis.UnixDomainSocketConnection,
                "path": "/" + path,
            })
            # host+port are invalid options when using this connection type.
            connparams.pop("host", None)
            connparams.pop("port", None)
            connparams.pop("socket_connect_timeout")
        else:
            connparams["db"] = path

        ssl_param_keys = [
            "ssl_ca_certs",
            "ssl_certfile",
            "ssl_keyfile",
            "ssl_cert_reqs",
        ]

        if scheme == "redis":
            # If connparams or query string contain ssl params, raise error
            if any(key in connparams for key in ssl_param_keys) or any(
                    key in query for key in ssl_param_keys):
                raise ValueError(E_REDIS_SSL_PARAMS_AND_SCHEME_MISMATCH)

        if scheme == "rediss":
            connparams["connection_class"] = redis.SSLConnection
            # The following parameters, if present in the URL, are encoded. We
            # must add the decoded values to connparams.
            for ssl_setting in ssl_param_keys:
                ssl_val = query.pop(ssl_setting, None)
                if ssl_val:
                    connparams[ssl_setting] = unquote(ssl_val)

        # db may be string and start with / like in kombu.
        db = connparams.get("db") or 0
        db = db.strip("/") if isinstance(db, string_t) else db
        connparams["db"] = int(db)

        for key, value in query.items():
            if key in redis.connection.URL_QUERY_ARGUMENT_PARSERS:
                query[key] = redis.connection.URL_QUERY_ARGUMENT_PARSERS[key](
                    value)

        # Query parameters override other parameters
        connparams.update(query)
        return connparams
Exemplo n.º 13
0
def _add_optparse_argument(
    parser,
    opt,
    typemap={
        'string': text_t,
        'int': int,
        'long': long_t,
        'float': float,
        'complex': complex,
        'choice': None
    }):
    if opt.callback:
        opt.type = _optparse_callback_to_type(opt, opt.type)
    # argparse checks for existence of this kwarg
    if opt.action == 'callback':
        opt.action = None
    # store_true sets value to "('NO', 'DEFAULT')" for some
    # crazy reason, so not to set a sane default here.
    if opt.action == 'store_true' and opt.default is None:
        opt.default = False
    parser.add_argument(
        *opt._long_opts + opt._short_opts,
        **dictfilter({
            'action': opt.action,
            'type': typemap.get(opt.type, opt.type),
            'dest': opt.dest,
            'nargs': opt.nargs,
            'choices': opt.choices,
            'help': opt.help,
            'metavar': opt.metavar,
            'default': opt.default
        }))
Exemplo n.º 14
0
 def _get_queue_arguments(self, ttl=None, expires=None):
     conf = self.app.conf
     return dictfilter(
         {
             "x-message-ttl": maybe_s_to_ms(ttl if ttl is not None else conf.event_queue_ttl),
             "x-expires": maybe_s_to_ms(expires if expires is not None else conf.event_queue_expires),
         }
     )
Exemplo n.º 15
0
 def _get_queue_arguments(self):
     conf = self.app.conf
     return dictfilter(
         {
             "x-message-ttl": maybe_s_to_ms(conf.CELERY_EVENT_QUEUE_TTL),
             "x-expires": maybe_s_to_ms(conf.CELERY_EVENT_QUEUE_EXPIRES),
         }
     )
Exemplo n.º 16
0
 def _get_queue_arguments(self):
     conf = self.app.conf
     return dictfilter({
         'x-message-ttl':
         maybe_s_to_ms(conf.CELERY_EVENT_QUEUE_TTL),
         'x-expires':
         maybe_s_to_ms(conf.CELERY_EVENT_QUEUE_EXPIRES),
     })
Exemplo n.º 17
0
    def _params_from_url(self, url, defaults):
        scheme, host, port, username, password, path, query = _parse_url(url)
        connparams = dict(
            defaults,
            **dictfilter({
                'host': host,
                'port': port,
                'username': username,
                'password': password,
                'db': query.pop('virtual_host', None)
            }))

        if scheme == 'socket':
            # use 'path' as path to the socket… in this case
            # the database number should be given in 'query'
            connparams.update({
                'connection_class': self.redis.UnixDomainSocketConnection,
                'path': '/' + path,
            })
            # host+port are invalid options when using this connection type.
            connparams.pop('host', None)
            connparams.pop('port', None)
            connparams.pop('socket_connect_timeout')
        else:
            connparams['db'] = path

        ssl_param_keys = [
            'ssl_ca_certs', 'ssl_certfile', 'ssl_keyfile', 'ssl_cert_reqs'
        ]

        if scheme == 'redis':
            # If connparams or query string contain ssl params, raise error
            if (any(key in connparams for key in ssl_param_keys)
                    or any(key in query for key in ssl_param_keys)):
                raise ValueError(E_REDIS_SSL_PARAMS_AND_SCHEME_MISMATCH)

        if scheme == 'rediss':
            connparams['connection_class'] = redis.SSLConnection
            # The following parameters, if present in the URL, are encoded. We
            # must add the decoded values to connparams.
            for ssl_setting in ssl_param_keys:
                ssl_val = query.pop(ssl_setting, None)
                if ssl_val:
                    connparams[ssl_setting] = unquote(ssl_val)

        # db may be string and start with / like in kombu.
        db = connparams.get('db') or 0
        db = db.strip('/') if isinstance(db, str) else db
        connparams['db'] = int(db)

        for key, value in query.items():
            if key in redis.connection.URL_QUERY_ARGUMENT_PARSERS:
                query[key] = redis.connection.URL_QUERY_ARGUMENT_PARSERS[key](
                    value)

        # Query parameters override other parameters
        connparams.update(query)
        return connparams
Exemplo n.º 18
0
    def _params_from_url(self, url, defaults):
        scheme, host, port, _, password, path, query = _parse_url(url)
        connparams = dict(
            defaults,
            **dictfilter({
                'host': host,
                'port': port,
                'password': password,
                'db': query.pop('virtual_host', None)
            }))

        if scheme == 'socket':
            # use 'path' as path to the socket… in this case
            # the database number should be given in 'query'
            connparams.update({
                'connection_class': self.redis.UnixDomainSocketConnection,
                'path': '/' + path,
            })
            # host+port are invalid options when using this connection type.
            connparams.pop('host', None)
            connparams.pop('port', None)
            connparams.pop('socket_connect_timeout')
        else:
            connparams['db'] = path

        if scheme == 'rediss':
            connparams['connection_class'] = redis.SSLConnection
            # The following parameters, if present in the URL, are encoded. We
            # must add the decoded values to connparams.
            for ssl_setting in ['ssl_ca_certs', 'ssl_certfile', 'ssl_keyfile']:
                ssl_val = query.pop(ssl_setting, None)
                if ssl_val:
                    connparams[ssl_setting] = unquote(ssl_val)
            ssl_cert_reqs = query.pop('ssl_cert_reqs', 'MISSING')
            if ssl_cert_reqs == 'CERT_REQUIRED':
                connparams['ssl_cert_reqs'] = CERT_REQUIRED
            elif ssl_cert_reqs == 'CERT_OPTIONAL':
                logger.warn(W_REDIS_SSL_CERT_OPTIONAL)
                connparams['ssl_cert_reqs'] = CERT_OPTIONAL
            elif ssl_cert_reqs == 'CERT_NONE':
                logger.warn(W_REDIS_SSL_CERT_NONE)
                connparams['ssl_cert_reqs'] = CERT_NONE
            else:
                raise ValueError(E_REDIS_SSL_CERT_REQS_MISSING)

        # db may be string and start with / like in kombu.
        db = connparams.get('db') or 0
        db = db.strip('/') if isinstance(db, string_t) else db
        connparams['db'] = int(db)

        for key, value in query.items():
            if key in redis.connection.URL_QUERY_ARGUMENT_PARSERS:
                query[key] = redis.connection.URL_QUERY_ARGUMENT_PARSERS[key](
                    value)

        # Query parameters override other parameters
        connparams.update(query)
        return connparams
Exemplo n.º 19
0
    def _params_from_url(self, url, defaults):
        scheme, host, port, _, password, path, query = _parse_url(url)
        connparams = dict(
            defaults, **dictfilter({
                'host': host, 'port': port, 'password': password,
                'db': query.pop('virtual_host', None)})
        )

        if scheme == 'socket':
            # use 'path' as path to the socket… in this case
            # the database number should be given in 'query'
            connparams.update({
                'connection_class': self.redis.UnixDomainSocketConnection,
                'path': '/' + path,
            })
            # host+port are invalid options when using this connection type.
            connparams.pop('host', None)
            connparams.pop('port', None)
            connparams.pop('socket_connect_timeout')
        else:
            connparams['db'] = path

        if scheme == 'rediss':
            connparams['connection_class'] = redis.SSLConnection
            # The following parameters, if present in the URL, are encoded. We
            # must add the decoded values to connparams.
            for ssl_setting in ['ssl_ca_certs', 'ssl_certfile', 'ssl_keyfile']:
                ssl_val = query.pop(ssl_setting, None)
                if ssl_val:
                    connparams[ssl_setting] = unquote(ssl_val)
            ssl_cert_reqs = query.pop('ssl_cert_reqs', 'MISSING')
            if ssl_cert_reqs == 'CERT_REQUIRED':
                connparams['ssl_cert_reqs'] = CERT_REQUIRED
            elif ssl_cert_reqs == 'CERT_OPTIONAL':
                logger.warn(W_REDIS_SSL_CERT_OPTIONAL)
                connparams['ssl_cert_reqs'] = CERT_OPTIONAL
            elif ssl_cert_reqs == 'CERT_NONE':
                logger.warn(W_REDIS_SSL_CERT_NONE)
                connparams['ssl_cert_reqs'] = CERT_NONE
            else:
                raise ValueError(E_REDIS_SSL_CERT_REQS_MISSING)

        # db may be string and start with / like in kombu.
        db = connparams.get('db') or 0
        db = db.strip('/') if isinstance(db, string_t) else db
        connparams['db'] = int(db)

        if redis:
            for key, value in query.items():
                if key in redis.connection.URL_QUERY_ARGUMENT_PARSERS:
                    query[key] = redis.connection.URL_QUERY_ARGUMENT_PARSERS[key](
                        value
                    )

        # Query parameters override other parameters
        connparams.update(query)
        return connparams
Exemplo n.º 20
0
 def _get_queue_arguments(self, ttl=None, expires=None):
     conf = self.app.conf
     return dictfilter({
         'x-message-ttl':
         maybe_s_to_ms(ttl if ttl is not None else conf.event_queue_ttl, ),
         'x-expires':
         maybe_s_to_ms(
             expires
             if expires is not None else conf.event_queue_expires, ),
     })
Exemplo n.º 21
0
 def __radd__(self, other):
     if not isinstance(other, date):
         return NotImplemented
     year = self.year or other.year
     month = self.month or other.month
     day = min(monthrange(year, month)[1], self.day or other.day)
     ret = other.replace(**dict(
         dictfilter(self._fields()), year=year, month=month, day=day))
     if self.weekday is not None:
         ret += timedelta(days=(7 - ret.weekday() + self.weekday) % 7)
     return ret + timedelta(days=self.days)
Exemplo n.º 22
0
 def _fields(self, **extra):
     return dictfilter(
         {
             'year': self.year,
             'month': self.month,
             'day': self.day,
             'hour': self.hour,
             'minute': self.minute,
             'second': self.second,
             'microsecond': self.microsecond,
         }, **extra)
Exemplo n.º 23
0
 def _get_queue_arguments(self, ttl=None, expires=None):
     conf = self.app.conf
     return dictfilter({
         'x-message-ttl':
         maybe_s_to_ms(
             ttl if ttl is not None else conf.CELERY_EVENT_QUEUE_TTL, ),
         'x-expires':
         maybe_s_to_ms(
             expires
             if expires is not None else conf.CELERY_EVENT_QUEUE_EXPIRES, ),
     })
Exemplo n.º 24
0
 def _get_queue_arguments(self, ttl=None, expires=None):
     conf = self.app.conf
     return dictfilter({
         'x-message-ttl': maybe_s_to_ms(
             ttl if ttl is not None else conf.CELERY_EVENT_QUEUE_TTL,
         ),
         'x-expires': maybe_s_to_ms(
             expires if expires is not None
             else conf.CELERY_EVENT_QUEUE_EXPIRES,
         ),
     })
Exemplo n.º 25
0
 def __init__(self, app, connection=None, exchange=None, exchange_type=None,
              persistent=None, serializer=None, auto_delete=True, **kwargs):
     super(AMQPBackend, self).__init__(app, **kwargs)
     conf = self.app.conf
     self._connection = connection
     self.persistent = self.prepare_persistent(persistent)
     self.delivery_mode = 2 if self.persistent else 1
     exchange = exchange or conf.result_exchange
     exchange_type = exchange_type or conf.result_exchange_type
     self.exchange = self._create_exchange(
         exchange, exchange_type, self.delivery_mode,
     )
     self.serializer = serializer or conf.result_serializer
     self.auto_delete = auto_delete
     self.queue_arguments = dictfilter({
         'x-expires': maybe_s_to_ms(self.expires),
     })
Exemplo n.º 26
0
    def __init__(self, app, connection=None, exchange=None, exchange_type=None,
                 persistent=None, serializer=None, auto_delete=True, **kwargs):
        super(AMQPBackend, self).__init__(app, **kwargs)
        conf = self.app.conf
        self._connection = connection
        self.persistent = (conf.CELERY_RESULT_PERSISTENT if persistent is None
                           else persistent)
        exchange = exchange or conf.CELERY_RESULT_EXCHANGE
        exchange_type = exchange_type or conf.CELERY_RESULT_EXCHANGE_TYPE
        self.exchange = self._create_exchange(exchange, exchange_type,
                                              self.persistent)
        self.serializer = serializer or conf.CELERY_RESULT_SERIALIZER
        self.auto_delete = auto_delete

        self.expires = None
        if 'expires' not in kwargs or kwargs['expires'] is not None:
            self.expires = self.prepare_expires(kwargs.get('expires'))
        self.queue_arguments = dictfilter({
            'x-expires': maybe_s_to_ms(self.expires),
        })
Exemplo n.º 27
0
 def __init__(self, app, connection=None, exchange=None, exchange_type=None,
              persistent=None, serializer=None, auto_delete=True, **kwargs):
     deprecated.warn(
         'The AMQP result backend', deprecation='4.0', removal='5.0',
         alternative='Please use RPC backend or a persistent backend.')
     super(AMQPBackend, self).__init__(app, **kwargs)
     conf = self.app.conf
     self._connection = connection
     self.persistent = self.prepare_persistent(persistent)
     self.delivery_mode = 2 if self.persistent else 1
     exchange = exchange or conf.result_exchange
     exchange_type = exchange_type or conf.result_exchange_type
     self.exchange = self._create_exchange(
         exchange, exchange_type, self.delivery_mode,
     )
     self.serializer = serializer or conf.result_serializer
     self.auto_delete = auto_delete
     self.queue_arguments = dictfilter({
         'x-expires': maybe_s_to_ms(self.expires),
     })