Exemplo n.º 1
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.º 2
0
 def __init__(self):
     self._engines = {}
     self._sessions = {}
     self.forked = False
     self.prepared = False
     if register_after_fork is not None:
         register_after_fork(self, _after_fork_cleanup_session)
Exemplo n.º 3
0
 def __init__(self, app=None):
     self.app = app
     self.mailbox = self.Mailbox(
         app.conf.control_exchange,
         type='fanout',
         accept=['json'],
         producer_pool=lazy(lambda: self.app.amqp.producer_pool),
         queue_ttl=app.conf.control_queue_ttl,
         reply_queue_ttl=app.conf.control_queue_ttl,
         queue_expires=app.conf.control_queue_expires,
         reply_queue_expires=app.conf.control_queue_expires,
     )
     register_after_fork(self, _after_fork_cleanup_control)
    def __init__(self, *args, **kwargs):
        super_ = super(Channel, self)
        super_.__init__(*args, **kwargs)

        if not self.ack_emulation:  # disable visibility timeout
            self.QoS = virtual.QoS

        if self.queue_order_strategy == 'round_robin':
            self._queue_scheduler = RoundRobinQueueScheduler()
        elif self.queue_order_strategy == 'prioritized_levels':
            self._queue_scheduler = \
                PrioritizedLevelsQueueScheduler(self.prioritized_levels_queue_config)
        elif self.queue_order_strategy == 'weighted_prioritized_levels_with_round_robin':
            self._queue_scheduler = \
                WeightedPrioritizedLevelsWithRRQueueScheduler(
                        self.weight_for_prioritized_levels,
                        self.prioritized_levels_queue_config,
                        self.queues_for_round_robin)
        else:
            raise NotImplementedError
        self.Client = self._get_client()
        self.ResponseError = self._get_response_error()
        self.active_fanout_queues = set()
        self.auto_delete_queues = set()
        self._fanout_to_queue = {}
        self.handlers = {'ZREM': self._zrem_read, 'LISTEN': self._receive}

        if self.fanout_prefix:
            if isinstance(self.fanout_prefix, str):
                self.keyprefix_fanout = self.fanout_prefix
        else:
            # previous versions did not set a fanout, so cannot enable
            # by default.
            self.keyprefix_fanout = ''

        # Evaluate connection.
        try:
            self.client.ping()
        except Exception:
            self._disconnect_pools()
            raise

        self.connection.cycle.add(self)  # add to channel poller.
        # copy errors, in case channel closed but threads still
        # are still waiting for data.
        self.connection_errors = self.connection.connection_errors

        if register_after_fork is not None:
            register_after_fork(self, _after_fork_cleanup_channel)
Exemplo n.º 5
0
 def __init__(self, app, connection=None, exchange=None, exchange_type=None,
              persistent=None, serializer=None, auto_delete=True, **kwargs):
     super(RPCBackend, 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.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.º 6
0
    def __init__(self, *args, **kwargs):
        super_ = super(Channel, self)
        super_.__init__(*args, **kwargs)

        if not self.ack_emulation:  # disable visibility timeout
            self.QoS = virtual.QoS

        self._queue_cycle = cycle_by_name(self.queue_order_strategy)()
        self.Client = self._get_client()
        self.ResponseError = self._get_response_error()
        self.active_fanout_queues = set()
        self.auto_delete_queues = set()
        self._fanout_to_queue = {}
        self.handlers = {'BRPOP': self._brpop_read, 'LISTEN': self._receive}

        if self.fanout_prefix:
            if isinstance(self.fanout_prefix, string_t):
                self.keyprefix_fanout = self.fanout_prefix
        else:
            # previous versions did not set a fanout, so cannot enable
            # by default.
            self.keyprefix_fanout = ''

        # Evaluate connection.
        try:
            self.client.ping()
        except Exception:
            self._disconnect_pools()
            raise

        self.connection.cycle.add(self)  # add to channel poller.
        # copy errors, in case channel closed but threads still
        # are still waiting for data.
        self.connection_errors = self.connection.connection_errors

        if register_after_fork is not None:
            register_after_fork(self, _after_fork_cleanup_channel)
Exemplo n.º 7
0
    def __init__(self, *args, **kwargs):
        super_ = super(Channel, self)
        super_.__init__(*args, **kwargs)

        if not self.ack_emulation:  # disable visibility timeout
            self.QoS = virtual.QoS

        self._queue_cycle = cycle_by_name(self.queue_order_strategy)()
        self.Client = self._get_client()
        self.ResponseError = self._get_response_error()
        self.active_fanout_queues = set()
        self.auto_delete_queues = set()
        self._fanout_to_queue = {}
        self.handlers = {'BRPOP': self._brpop_read, 'LISTEN': self._receive}

        if self.fanout_prefix:
            if isinstance(self.fanout_prefix, string_t):
                self.keyprefix_fanout = self.fanout_prefix
        else:
            # previous versions did not set a fanout, so cannot enable
            # by default.
            self.keyprefix_fanout = ''

        # Evaluate connection.
        try:
            self.client.ping()
        except Exception:
            self._disconnect_pools()
            raise

        self.connection.cycle.add(self)  # add to channel poller.
        # copy errors, in case channel closed but threads still
        # are still waiting for data.
        self.connection_errors = self.connection.connection_errors

        if register_after_fork is not None:
            register_after_fork(self, _after_fork_cleanup_channel)
Exemplo n.º 8
0
 def _ensure_after_fork(self):
     if not self._after_fork_registered:
         self._after_fork_registered = True
         if register_after_fork is not None:
             register_after_fork(self, _after_fork_cleanup_app)
Exemplo n.º 9
0
 def _ensure_after_fork(self):
     if not self._after_fork_registered:
         self._after_fork_registered = True
         if register_after_fork is not None:
             register_after_fork(self, _after_fork_cleanup_app)