示例#1
0
 def producer_pool(self):
     if self._producer_pool is None:
         self._producer_pool = ProducerPool(
             self.app.pool,
             limit=self.app.pool.limit,
             Producer=self.Producer,
         )
     return self._producer_pool
示例#2
0
class Producer(ConnectibleMixin):
    """Produce and publish messages"""

    def __init__(self, exchange, route=None):
        self.producers = ProducerPool(self.connections)
        self.exchange = exchange
        self.route = route or ''
        super(Producer, self).__init__()

    def publish(self, body, route=None):
        """Publish message.

        :param body: Message body.
        :param route: Message route.
        :type route: str or None
        """
        with self.producers.acquire(block=True) as producer:
            producer.publish(msgpack.packb(body, use_bin_type=True),
                             exchange=self.exchange,
                             routing_key=route or self.route)
示例#3
0
 def producer_pool(self):
     return ProducerPool(self.app.pool,
                         limit=self.app.pool.limit,
                         Producer=self.TaskProducer)
示例#4
0
 def __init__(self, exchange, route=None):
     self.producers = ProducerPool(self.connections)
     self.exchange = exchange
     self.route = route or ''
     super(Producer, self).__init__()