示例#1
0
    def _Dynamic_Add(self, request, response, request_id=None):
        """Add a single task to a queue.

    Must adhere to the '_Dynamic_' naming convention for stubbing to work.
    See taskqueue_service.proto for a full description of the RPC.

    Args:
      request: The taskqueue_service_pb.TaskQueueAddRequest. See
          taskqueue_service.proto.
      response: The taskqueue_service_pb.TaskQueueAddResponse. See
          taskqueue_service.proto.
      request_id: A string specifying the request ID.
    """
        bulk_request = taskqueue_service_pb.TaskQueueBulkAddRequest()
        bulk_response = taskqueue_service_pb.TaskQueueBulkAddResponse()

        bulk_request.add_add_request().CopyFrom(request)
        self._Dynamic_BulkAdd(bulk_request, bulk_response, request_id)

        assert bulk_response.taskresult_size() == 1
        result = bulk_response.taskresult(0).result()

        if result != taskqueue_service_pb.TaskQueueServiceError.OK:
            raise apiproxy_errors.ApplicationError(result)
        elif bulk_response.taskresult(0).has_chosen_task_name():
            response.set_chosen_task_name(
                bulk_response.taskresult(0).chosen_task_name())
示例#2
0
    def __AddTasks(self, tasks, transactional, fill_request):
        """Internal implementation of adding tasks where tasks must be a list."""

        if len(tasks) > MAX_TASKS_PER_ADD:
            raise TooManyTasksError(
                'No more than %d tasks can be added in a single call' %
                MAX_TASKS_PER_ADD)

        request = taskqueue_service_pb.TaskQueueBulkAddRequest()
        response = taskqueue_service_pb.TaskQueueBulkAddResponse()

        task_names = set()
        for task in tasks:
            if task.name:
                if task.name in task_names:
                    raise DuplicateTaskNameError(
                        'The task name %r is used more than once in the request'
                        % task.name)
                task_names.add(task.name)
            if task.was_enqueued:
                raise BadTaskStateError('Task has already been enqueued.')

            fill_request(task, request.add_add_request(), transactional)

        try:
            apiproxy_stub_map.MakeSyncCall('taskqueue', 'BulkAdd', request,
                                           response)
        except apiproxy_errors.ApplicationError, e:
            raise self.__TranslateError(e.application_error, e.error_detail)
示例#3
0
    def _Dynamic_Add(self, request, response):
        bulk_request = taskqueue_service_pb.TaskQueueBulkAddRequest()
        bulk_response = taskqueue_service_pb.TaskQueueBulkAddResponse()

        bulk_request.add_add_request().CopyFrom(request)
        self._Dynamic_BulkAdd(bulk_request, bulk_response)

        assert bulk_response.taskresult_size() == 1
        result = bulk_response.taskresult(0).result()

        if result != taskqueue_service_pb.TaskQueueServiceError.OK:
            raise apiproxy_errors.ApplicationError(result)
        elif bulk_response.taskresult(0).has_chosen_task_name():
            response.set_chosen_task_name(
                bulk_response.taskresult(0).chosen_task_name())
示例#4
0
  def __AddTasks(self, tasks, transactional):
    """Internal implementation of .add() where tasks must be a list."""

    request = taskqueue_service_pb.TaskQueueBulkAddRequest()
    response = taskqueue_service_pb.TaskQueueBulkAddResponse()

    task_names = set()
    for task in tasks:
      if task.name:
        if task.name in task_names:
          raise DuplicateTaskNameError(
              'The task name %r is used more than once in the request' %
              task.name)
        task_names.add(task.name)

      self.__FillAddRequest(task, request.add_add_request(), transactional)

    try:
      apiproxy_stub_map.MakeSyncCall('taskqueue', 'BulkAdd', request, response)
    except apiproxy_errors.ApplicationError, e:
      raise self.__TranslateError(e.application_error, e.error_detail)