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 {}))
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)
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 {}))
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 {}))
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)
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)
def announce(self, event, **retry_policy): return ipublish(producers[self.agent.connection], self._announce, (event, ), **retry_policy)