def pull(self, return_immediately=False, max_messages=1, connection=None): """API call: retrieve messages for the subscription. See: https://cloud.google.com/pubsub/reference/rest/v1beta2/projects/subscriptions/pull :type return_immediately: boolean :param return_immediately: if True, the back-end returns even if no messages are available; if False, the API call blocks until one or more messages are available. :type max_messages: int :param max_messages: the maximum number of messages to return. :type connection: :class:`gcloud.pubsub.connection.Connection` or None :param connection: the connection to use. If not passed, falls back to the topic's connection. :rtype: list of (ack_id, message) tuples :returns: sequence of tuples: ``ack_id`` is the ID to be used in a subsequent call to :meth:`acknowledge`, and ``message`` is an instance of :class:`gcloud.pubsub.message.Message`. """ connection = _require_connection(connection) data = { 'returnImmediately': return_immediately, 'maxMessages': max_messages } response = connection.api_request(method='POST', path='%s:pull' % self.path, data=data) return [(info['ackId'], Message.from_api_repr(info['message'])) for info in response['receivedMessages']]
def pull(self, return_immediately=False, max_messages=1, client=None): """API call: retrieve messages for the subscription. See: https://cloud.google.com/pubsub/reference/rest/v1beta2/projects/subscriptions/pull :type return_immediately: boolean :param return_immediately: if True, the back-end returns even if no messages are available; if False, the API call blocks until one or more messages are available. :type max_messages: int :param max_messages: the maximum number of messages to return. :type client: :class:`gcloud.pubsub.client.Client` or ``NoneType`` :param client: the client to use. If not passed, falls back to the ``client`` stored on the current subscription's topic. :rtype: list of (ack_id, message) tuples :returns: sequence of tuples: ``ack_id`` is the ID to be used in a subsequent call to :meth:`acknowledge`, and ``message`` is an instance of :class:`gcloud.pubsub.message.Message`. """ client = self._require_client(client) data = {'returnImmediately': return_immediately, 'maxMessages': max_messages} response = client.connection.api_request( method='POST', path='%s:pull' % (self.path,), data=data) return [(info['ackId'], Message.from_api_repr(info['message'])) for info in response.get('receivedMessages', ())]
def pull(self, return_immediately=False, max_messages=1, client=None): """API call: retrieve messages for the subscription. See: https://cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/pull :type return_immediately: boolean :param return_immediately: if True, the back-end returns even if no messages are available; if False, the API call blocks until one or more messages are available. :type max_messages: int :param max_messages: the maximum number of messages to return. :type client: :class:`gcloud.pubsub.client.Client` or ``NoneType`` :param client: the client to use. If not passed, falls back to the ``client`` stored on the current subscription's topic. :rtype: list of (ack_id, message) tuples :returns: sequence of tuples: ``ack_id`` is the ID to be used in a subsequent call to :meth:`acknowledge`, and ``message`` is an instance of :class:`gcloud.pubsub.message.Message`. """ client = self._require_client(client) api = client.subscriber_api response = api.subscription_pull( self.full_name, return_immediately, max_messages) return [(info['ackId'], Message.from_api_repr(info['message'])) for info in response]