Prácticas recomendadas y limitaciones

Ten en cuenta estos lineamientos cuando uses BatchJobService.

Mejora la capacidad de procesamiento

  • Se prefieren menos trabajos más grandes en lugar de muchos trabajos más pequeños.

  • Ordena las operaciones subidas por tipo de operación. Por ejemplo, si tu trabajo contiene operaciones para agregar campañas, grupos de anuncios y criterios de grupos de anuncios, ordena las operaciones de la carga de modo que todas las operaciones de la campaña sean primero, seguidas de todas las operaciones de grupos de anuncios y, por último, todas las operaciones de criterio del grupo de anuncios.

  • Dentro de operaciones del mismo tipo, se puede mejorar el rendimiento al agruparlas por recurso superior. Por ejemplo, si tienes una serie de objetos AdGroupCriterionOperation, puede ser más eficiente agrupar las operaciones por grupo de anuncios en lugar de combinar operaciones que afectan los criterios del grupo de anuncios en diferentes grupos de anuncios.

Evita problemas de simultaneidad

  • Cuando envíes varios trabajos simultáneos para la misma cuenta, intenta reducir la probabilidad de que los trabajos operen en los mismos objetos al mismo tiempo, a la vez que mantienes tamaños de trabajos grandes. Muchos trabajos sin terminar (con estado RUNNING) que intentan mutar el mismo conjunto de objetos pueden generar condiciones similares a los interbloqueos, lo que genera una demora grave, así como fallas en los trabajos.

  • No envíes varias operaciones que mutan el mismo objeto en el mismo trabajo, ya que el resultado puede ser impredecible.

Recupera resultados de manera óptima

  • No sondees el estado del trabajo con demasiada frecuencia o corres el riesgo de alcanzar errores de límite de frecuencia.

  • No obtengas más de 1,000 resultados por página. El servidor podría devolver menos datos debido a la carga o a otros factores.

  • El orden de los resultados será el mismo que el de carga.

Guía de uso adicional

  • Puedes establecer un límite superior para el tiempo que se permite ejecutar un trabajo por lotes antes de que se cancele. Cuando crees un nuevo trabajo por lotes, configura el campo metadata.execution_limit_seconds con el límite de tiempo que prefieras, en segundos. No hay un límite de tiempo predeterminado si no se configura metadata.execution_limit_seconds.

  • Se recomienda agregar un máximo de 1,000 operaciones por AddBatchJobOperationsRequest y usar sequence_token para subir el resto de las operaciones al mismo trabajo. Según el contenido de las operaciones, demasiadas operaciones en una sola AddBatchJobOperationsRequest podrían causar un error REQUEST_TOO_LARGE. Puedes manejar este error si reduces la cantidad de operaciones y vuelves a ejecutar AddBatchJobOperationsRequest.

Limitaciones

  • Cada BatchJob admite hasta un millón de operaciones.

  • Cada cuenta puede tener hasta 100 trabajos activos o pendientes al mismo tiempo.

  • Los trabajos pendientes con más de 7 días de antigüedad se quitan automáticamente.