Tenez compte de ces consignes lorsque vous utilisez BatchJobService.
Améliorer le débit
- Il est préférable d'avoir moins de tâches plus volumineuses que de nombreuses tâches plus petites. 
- Triez les opérations importées par type d'opération. Par exemple, si votre tâche contient des opérations permettant d'ajouter des campagnes, des groupes d'annonces et des critères de groupe d'annonces, ordonnez les opérations dans votre import afin que toutes les opérations de campagne soient en premier, suivies de toutes les opérations de groupe d'annonces, et enfin de toutes les opérations de critère de groupe d'annonces. 
- Pour les opérations du même type, il peut être plus efficace de les regrouper par ressource parente. Par exemple, si vous avez une série d'objets - AdGroupCriterionOperation, il peut être plus efficace de regrouper les opérations par groupe d'annonces, plutôt que de mélanger les opérations qui affectent les critères de groupe d'annonces dans différents groupes d'annonces.
Éviter les problèmes de simultanéité
- Lorsque vous envoyez plusieurs jobs simultanés pour le même compte, essayez de réduire la probabilité que les jobs fonctionnent sur les mêmes objets en même temps, tout en conservant des tailles de job importantes. De nombreuses tâches inachevées, dont l'état est - RUNNING, tentent de modifier le même ensemble d'objets, ce qui peut entraîner des conditions de type blocage, entraînant un ralentissement important, voire des échecs de tâches.
- N'envoyez pas plusieurs opérations qui modifient le même objet dans le même job, car le résultat peut être imprévisible. 
Récupérer les résultats de manière optimale
- N'interrogez pas l'état du job trop fréquemment, car vous risquez de rencontrer des erreurs de limitation du taux. 
- Ne récupérez pas plus de 1 000 résultats par page. Le serveur peut renvoyer un nombre d'éléments inférieur à celui demandé en raison de la charge ou d'autres facteurs. 
- L'ordre des résultats sera le même que celui des fichiers importés. 
Conseils d'utilisation supplémentaires
- Vous pouvez définir une limite supérieure pour la durée d'exécution d'un job par lot avant son annulation. Lorsque vous créez un job par lot, définissez le champ - metadata.execution_limit_secondssur la limite de temps de votre choix, en secondes. Si- metadata.execution_limit_secondsn'est pas défini, il n'y a pas de limite de temps par défaut.
- Nous vous recommandons de ne pas ajouter plus de 1 000 opérations par - AddBatchJobOperationsRequestet d'utiliser- sequence_tokenpour importer le reste des opérations dans le même job. Selon le contenu des opérations, un trop grand nombre d'opérations dans un même- AddBatchJobOperationsRequestpeut entraîner une erreur- REQUEST_TOO_LARGE. Vous pouvez gérer cette erreur en réduisant le nombre d'opérations et en réessayant- AddBatchJobOperationsRequest.
Limites
- Chaque - BatchJobpeut effectuer jusqu'à un million d'opérations.
- Chaque compte peut comporter jusqu'à 100 tâches actives ou en attente en même temps. 
- Les tâches en attente datant de plus de sept jours sont automatiquement supprimées. 
- Depuis la version 22, chaque requête - AddBatchJobOperationsest limitée à 10 000 opérations de mutation par requête.
- À partir de la version 22, pour le champ - page_sizedans- ListBatchJobResultsRequest:- Si page_sizen'est pas défini ou est égal à 0, la valeur par défaut est de 1 000.
- Si page_sizeest supérieur à 1 000 ou inférieur à 0, l'API renvoie une erreurINVALID_PAGE_SIZE.
 
- Si 
- La taille maximale de chaque - AddBatchJobOperationsRequestest de 10 484 504 octets. Si vous dépassez cette limite, vous recevrez une erreur- INTERNAL_ERROR. Vous pouvez déterminer la taille de la requête avant de l'envoyer et prendre les mesures appropriées si elle est trop volumineuse.- Java- static final int MAX_REQUEST_BYTES = 10_484_504; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();- Python- from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()- Ruby- require 'google/ads/google_ads' MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request.to_proto.bytesize- PHP- use Google\Ads\GoogleAds\V16\Resources\Campaign; const MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;- .NET- using Google.Protobuf; const int MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;- Perl- use Devel::Size qw(total_size); use constant MAX_REQUEST_BYTES => 10484504; ... (code to get the request object) my $size_in_bytes = total_size($request);