def _send(self, request, status, **details): """ Send a status update. :param request: The received (json) request. :type request: Document :param status: The status to send ('accepted'|'rejected') :type status: str """ address = request.replyto if not address: return try: producer = Producer(self.url) producer.authenticator = self.authenticator producer.open() try: producer.send( address, sn=request.sn, data=request.data, status=status, timestamp=timestamp(), **details) finally: producer.close() except Exception: log.exception('send (%s), failed', status)
def _send(self, reply=None, queue=None): """ Send the request using the specified policy object and generated serial number. :param reply: The AMQP reply address. :type reply: str :param queue: The reply queue for synchronous calls. :type queue: Queue """ producer = Producer(self._policy.url) producer.authenticator = self._policy.authenticator producer.open() try: producer.send( self._policy.address, self._policy.ttl, # body sn=self.sn, replyto=reply, request=self._request, secret=self._policy.secret, pam=self._policy.pam, data=self._policy.data) finally: producer.close() log.debug('sent (%s): %s', self._policy.address, self._request) if queue is None: # no reply expected return self._sn reader = Reader(queue, self._policy.url) reader.authenticator = self._policy.authenticator reader.open() try: policy = self._policy return policy.get_reply(self.sn, reader) finally: reader.close()