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 importantes 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.
Atomicité dans la répartition par lot
L'API Google Ads peut diviser les opérations d'un job par lot envoyé en sous-lots plus petits pour le traitement. Si vous ne regroupez pas les opérations associées, comme les modifications de groupes de fiches dans un AssetGroup et un AdGroup, consécutivement dans un job par lot, l'API Google Ads peut diviser ces opérations en différents sous-lots. Cette séparation peut entraîner l'échec de la modification ou laisser le compte dans un état incohérent.
Regroupement logique
AssetGroupListingGroupFilterOperation gère les groupes de fiches dans un AssetGroup, ce qui est courant dans les campagnes Performance Max.
AdGroupCriterionOperation gère les groupes de fiches dans une AdGroup, ce qui est courant dans les campagnes Shopping standards. Les deux sont utilisés pour définir le ciblage produit. Si vous apportez des modifications qui affectent la hiérarchie du ciblage des produits dans les deux contextes, regroupez ces opérations de manière consécutive dans votre job par lot pour vous assurer qu'elles sont appliquées ensemble.
Cohérence des données
Pour assurer la cohérence des données et éviter les mises à jour partielles, ajoutez les opérations de groupe de fiches associées consécutivement à votre job par lot. Cet ordre permet de les regrouper en sous-lots atomiques selon la logique de fractionnement des lots de l'API, ce qui évite que votre compte ne soit laissé dans un état incohérent.
É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 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 trop souvent l'état du job, 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 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. Simetadata.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'utilisersequence_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 seulAddBatchJobOperationsRequestpeut entraîner une erreurREQUEST_TOO_LARGE. Vous pouvez gérer cette erreur en réduisant le nombre d'opérations et en réessayantAddBatchJobOperationsRequest.
Limites
Chaque
BatchJobaccepte 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_sizedansListBatchJobResultsRequest:- 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 un message d'erreurINTERNAL_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.bytesizePHP
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);