Example #1
0
    def cast(self, method, args={}, before=None, retry=None,
            retry_policy=None, type=None, **props):
        """Send message to actor.  Discarding replies."""
        retry = self.retry if retry is None else retry
        body = {'class': self.name, 'method': method, 'args': args}
        
        _retry_policy = self.retry_policy
        if retry_policy:  # merge default and custom policies.
            _retry_policy = dict(_retry_policy, **retry_policy)

        #if type:
        #    props.setdefault('routing_key', self.type_to_rkey[type])
        if type and type not in self.types:
            raise Exception('the type:%s is not supported', type)
        elif not type:
            type = ACT_TYPE.DIRECT
            
        props.setdefault('routing_key', self.routing_key)
        props.setdefault('serializer', self.serializer)
        exchange = self.type_to_exchange[type]()
        print 'exchange we are sending to is:', exchange.name
        props = dict(props, exchange=exchange, before=before)

        ipublish(producers[self._connection], self._publish,
                 (body, ), dict(props, exchange=exchange, before=before),
                 **(retry_policy or {}))
Example #2
0
    def test_ipublish_with_custom_errback(self):
        producer, pool, fun, _ = self.get_ipublish_args()

        errback = Mock()
        common.ipublish(pool, fun, (2, 2), {'foo': 'bar'}, errback=errback)
        _, e_kwargs = producer.connection.ensure.call_args
        self.assertEqual(e_kwargs.get('errback'), errback)
Example #3
0
    def test_ipublish_with_custom_errback(self):
        producer, pool, fun, _ = self.get_ipublish_args()

        errback = Mock()
        common.ipublish(pool, fun, (2, 2), {'foo': 'bar'}, errback=errback)
        _, e_kwargs = producer.connection.ensure.call_args
        self.assertEqual(e_kwargs.get('errback'), errback)
Example #4
0
    def cast(self,
             method,
             args={},
             before=None,
             retry=None,
             retry_policy=None,
             type=None,
             **props):
        """Send message to actor.  Discarding replies."""
        retry = self.retry if retry is None else retry
        body = {'class': self.name, 'method': method, 'args': args}
        exchange = self.exchange
        _retry_policy = self.retry_policy
        if retry_policy:  # merge default and custom policies.
            _retry_policy = dict(_retry_policy, **retry_policy)

        if type:
            props.setdefault('routing_key', self.type_to_rkey[type])
        props.setdefault('routing_key', self.default_routing_key)
        props.setdefault('serializer', self.serializer)

        props = dict(props, exchange=exchange, before=before)

        ipublish(producers[self._connection], self._publish, (body, ),
                 dict(props, exchange=exchange, before=before),
                 **(retry_policy or {}))
Example #5
0
 def emit(self, method, args={}, before=None, retry=None,
         retry_policy=None, type=None, exchange = None, **props):
     """Send message to actor's outbox."""
     retry = self.retry if retry is None else retry
     body = {'class': self.name, 'method': method, 'args': args}
     exchange = self.outbox
     _retry_policy = self.retry_policy
     if retry_policy:  # merge default and custom policies.
         _retry_policy = dict(_retry_policy, **retry_policy)
     
     props.setdefault('routing_key', self.routing_key)    
     props.setdefault('serializer', self.serializer)
     
     props = dict(props, exchange=exchange, before=before)
     con = producers[self._connection]
     print'connection is:', con
     ipublish(con, self._publish,
              (body, ), dict(props, exchange=exchange, before=before),
              **(retry_policy or {}))
Example #6
0
    def cast(self, method, args={}, before=None, retry=None,
            retry_policy=None, type=None, **props):
        """Send message to actor.  Discarding replies."""
        retry = self.retry if retry is None else retry
        body = {'class': self.name, 'method': method, 'args': args}
        exchange = self.exchange
        _retry_policy = self.retry_policy
        if retry_policy:  # merge default and custom policies.
            _retry_policy = dict(_retry_policy, **retry_policy)

        if type:
            props.setdefault('routing_key', self.type_to_rkey[type])
        props.setdefault('routing_key', self.default_routing_key)
        props.setdefault('serializer', self.serializer)

        props = dict(props, exchange=exchange, before=before)

        ipublish(producers[self._connection], self._publish,
                 (body, ), dict(props, exchange=exchange, before=before),
                 **(retry_policy or {}))
Example #7
0
    def test_ipublish(self):
        producer, pool, fun, ensure_returns = self.get_ipublish_args()
        ensure_returns.return_value = 'works'

        ret = common.ipublish(pool, fun, (2, 2), {'foo': 'bar'})
        self.assertEqual(ret, 'works')

        self.assertTrue(producer.connection.ensure.called)
        e_args, e_kwargs = producer.connection.ensure.call_args
        self.assertTupleEqual(e_args, (producer, fun))
        self.assertTrue(e_kwargs.get('on_revive'))
        self.assertEqual(e_kwargs.get('errback'), common._ensure_errback)

        ensure_returns.assert_called_with(2, 2, foo='bar', producer=producer)
Example #8
0
    def test_ipublish(self):
        producer, pool, fun, ensure_returns = self.get_ipublish_args()
        ensure_returns.return_value = 'works'

        ret = common.ipublish(pool, fun, (2, 2), {'foo': 'bar'})
        self.assertEqual(ret, 'works')

        self.assertTrue(producer.connection.ensure.called)
        e_args, e_kwargs = producer.connection.ensure.call_args
        self.assertTupleEqual(e_args, (producer, fun))
        self.assertTrue(e_kwargs.get('on_revive'))
        self.assertEqual(e_kwargs.get('errback'), common._ensure_errback)

        ensure_returns.assert_called_with(2, 2, foo='bar', producer=producer)
Example #9
0
    def test_ipublish(self):
        producer, pool, fun, ensure_returns = self.get_ipublish_args()
        ensure_returns.return_value = "works"

        ret = common.ipublish(pool, fun, (2, 2), {"foo": "bar"})
        self.assertEqual(ret, "works")

        self.assertTrue(producer.connection.ensure.called)
        e_args, e_kwargs = producer.connection.ensure.call_args
        self.assertTupleEqual(e_args, (producer, fun))
        self.assertTrue(e_kwargs.get("on_revive"))
        self.assertEqual(e_kwargs.get("errback"), common._ensure_errback)

        ensure_returns.assert_called_with(2, 2, foo="bar", producer=producer)
Example #10
0
    def test_ipublish(self):
        producer, pool, fun, ensure_returns = self.get_ipublish_args()
        ensure_returns.return_value = "works"

        ret = common.ipublish(pool, fun, (2, 2), {"foo": "bar"})
        self.assertEqual(ret, "works")

        self.assertTrue(producer.connection.ensure.called)
        e_args, e_kwargs = producer.connection.ensure.call_args
        self.assertTupleEqual(e_args, (producer, fun))
        self.assertTrue(e_kwargs.get("on_revive"))
        self.assertEqual(e_kwargs.get("errback"), common._ensure_errback)

        ensure_returns.assert_called_with(2, 2, foo="bar", producer=producer)
Example #11
0
 def announce(self, event, **retry_policy):
     return ipublish(producers[self.agent.connection],
                     self._announce, (event, ), **retry_policy)
Example #12
0
 def announce(self, event, **retry_policy):
     return ipublish(producers[self.agent.connection], self._announce,
                     (event, ), **retry_policy)