Meilleures pratiques et limites

Tenez compte de ces consignes lors de l'utilisation BatchJobService

Améliorer le débit

  • Les emplois moins importants sont préférables à de nombreux emplois plus petits.

  • Classez les opérations importées par type d'opération. Par exemple, si votre emploi contient les opérations permettant d'ajouter des campagnes, des groupes d'annonces et des critères de groupe d'annonces, classer les opérations de votre téléchargement afin que toutes les des opérations sont en premier, suivies par toutes les opérations des groupes d'annonces, et enfin opérations sur les critères du groupe d'annonces.

  • Dans les opérations du même type, il peut améliorer les performances en les regroupant par ressource parente. Par exemple, si vous avez une série AdGroupCriterionOperation, il peut être plus efficace de regrouper des opérations par groupe d'annonces, plutôt que de mélanger des opérations ayant une incidence regrouper les critères 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 des jobs opèrent sur les mêmes objets en même temps, alors que et maintenir des jobs de grande taille. De nombreuses missions non terminées (dont l'état est RUNNING) qui essayer de modifier le même ensemble d'objets peut entraîner des conditions de type interblocage entraînant de graves ralentissements et même des échecs de tâches.

  • N'envoyez pas plusieurs opérations qui modifient le même objet dans le même car le résultat peut être imprévisible.

Récupération optimale des résultats

  • N'interrogez pas l'état du job trop fréquemment, car vous risqueriez d'atteindre la limite de débit. les erreurs.

  • Ne récupérez pas plus de 1 000 résultats par page. Le serveur pourrait renvoyer 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 la durée d'exécution maximale d'un job par lot en cours d'annulation. Lorsque vous créez un job par lot, définissez le paramètre metadata.execution_limit_seconds sur la limite de temps de votre choix, en secondes. Il n'existe pas d'heure par défaut limite si metadata.execution_limit_seconds n'est pas défini.

  • Il est recommandé de ne pas ajouter plus de 1 000 opérations par AddBatchJobOperationsRequest et utilisez les sequence_token pour importer le reste des opérations dans le même job. En fonction du contenu des opérations. Un trop grand nombre d'opérations AddBatchJobOperationsRequest pourrait entraîner une erreur REQUEST_TOO_LARGE. Toi peut gérer cette erreur en réduisant le nombre d'opérations et en réessayant AddBatchJobOperationsRequest

Limites

  • Chaque BatchJob peut accepter jusqu'à un million opérations.

  • Chaque compte peut comporter jusqu'à 100 tâches actives ou en attente à la fois.

  • Les offres d'emploi en attente datant de plus de sept jours sont automatiquement supprimées.

  • Chaque AddBatchJobOperationsRequest a une taille maximale de 10 484 504 octets. Si vous dépassez cette limite, vous recevrez un INTERNAL_ERROR. Vous pouvez déterminer la taille de la requête avant et de prendre les mesures nécessaires s'il est trop volumineux.

    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);