コード例 #1
0
 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)
コード例 #2
0
    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()
コード例 #3
0
ファイル: policy.py プロジェクト: pombredanne/gofer
    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()