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, triez-les dans votre importation de sorte que toutes les opérations de campagne soient en premier, suivies de toutes les opérations de groupe d'annonces, puis de toutes les opérations de critère de groupe d'annonces.
Dans les opérations du même type, il peut être plus efficace de les regrouper par ressource parente. Par exemple, si vous disposez d'une série d'objets
AdGroupCriterionOperation, il peut être plus efficace de regrouper les opérations par groupe d'annonces plutôt que de les mélanger, car elles affectent les critères de groupe d'annonces dans différents groupes d'annonces.
Atomicité dans la division 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, telles que les modifications de groupe de fiches dans un AssetGroup et un AdGroup, de manière consécutive dans un job par lot, l'API Google Ads peut les diviser 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 un AdGroup, ce qui est courant dans
les campagnes Shopping standards. Les deux sont utilisés pour définir le ciblage des produits. Si vous apportez des modifications qui affectent la hiérarchie de ciblage des produits dans les deux contextes, regroupez ces opérations de manière consécutive dans votre tâche par lot pour vous assurer qu'elles sont appliquées ensemble.
Cohérence des données
Pour maintenir la cohérence des données et éviter les mises à jour partielles, ajoutez les opérations de groupe de fiches associées de manière consécutive à votre job par lot. Cet ordre permet de les regrouper en sous-lots atomiques par la logique de division par lot 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 tâches simultanées pour le même compte, essayez de réduire la probabilité que les tâches fonctionnent sur les mêmes objets en même temps, tout en conservant des tailles de tâches 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 d'interblocage entraînant un ralentissement important, voire des échecs de tâches.N'envoyez pas plusieurs opérations qui modifient le même objet dans la même tâche, car le résultat peut être imprévisible.
Récupérer les résultats de manière optimale
N'interrogez pas l'état de la tâche trop fréquemment, sinon vous risquez d'atteindre les erreurs de limite de débit.
Ne récupérez pas plus de 1 000 résultats par page. Le serveur peut en renvoyer moins en raison de la charge ou d'autres facteurs.
L'ordre des résultats sera le même que l'ordre d'importation.
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
metadata.execution_limit_secondschamp sur 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.Il est recommandé d'ajouter au maximum 1 000 opérations par
AddBatchJobOperationsRequestet d'utiliser lesequence_tokenpour importer le reste des opérations dans la même tâche. En fonction du contenu des opérations, un trop grand nombre d'opérations dans une seuleAddBatchJobOperationsRequestpeut entraîner une erreurREQUEST_TOO_LARGE. Vous pouvez gérer cette erreur en réduisant le nombre d'opérations et en réessayant laAddBatchJobOperationsRequest.
Limites
Chaque
BatchJobaccepte jusqu'à un million d'opérations.Chaque compte peut avoir 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.
À partir de 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
page_sizechamp dansListBatchJobResultsRequest:- Si
page_sizen'est pas défini ou est égal à 0, la valeur par défaut est le maximum de 1 000. - Si
page_sizedépasse 1 000 ou est inférieur à 0, l'API renvoie uneINVALID_PAGE_SIZEerreur.
- Si
À partir de la version 23, chaque
AddBatchJobOperationsRequesta une taille maximale de 41 937 920 octets. Si vous dépassez cette limite, vous recevrez uneINTERNAL_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 = 41_937_920; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();Python
from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 41937920 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()Ruby
require 'google/ads/google_ads' MAX_REQUEST_BYTES = 41937920 ... (code to get the request object) size_in_bytes = request.to_proto.bytesizePHP
use Google\Ads\GoogleAds\V16\Resources\Campaign; const MAX_REQUEST_BYTES = 41937920; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;.NET
using Google.Protobuf; const int MAX_REQUEST_BYTES = 41937920; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;Perl
use Devel::Size qw(total_size); use constant MAX_REQUEST_BYTES => 41937920; ... (code to get the request object) my $size_in_bytes = total_size($request);
Taille d'une seule opération de mutation
Bien que la requête globale puisse être plus volumineuse, la taille d'une seule opération de mutation dans le lot est limitée à 10 484 488 octets (environ 10,48 Mo).