Konfiguracja

Klienta można skonfigurować na kilka sposobów.

Konfiguracja przy użyciu pliku YAML

Możesz określić plik YAML do inicjowania klienta, który zawiera niezbędne informacje uwierzytelniające potrzebne do wysyłania żądań. Dostęp do tego pliku jest możliwy po inicjowaniu klienta za pomocą metody load_from_storage. Najprostszym sposobem wygenerowania tego pliku jest skopiowanie przykładu google-ads.yaml z repozytorium GitHub i zmodyfikowanie go, tak aby zawierał Twoje dane logowania, w tym token programisty, token odświeżania, identyfikator klienta i tajny klucz klienta.

Aby określić lokalizację, w której znajduje się plik google-ads.yaml, podczas wywoływania metody możesz przekazać do metody ścieżkę jako ciąg znaków:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")

Możesz też określić ścieżkę, definiując konkretną zmienną środowiskową:

import os

os.environ["GOOGLE_ADS_CONFIGURATION_FILE_PATH"] = "path/to/google-ads.yaml"
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

Jeśli podasz obie wartości – ścieżka jest przekazywana do metody oraz występuje ta zmienna środowiskowa, biblioteka nadaje priorytet ścieżce przekazywanej do metody.

Jeśli nie podasz ścieżki, biblioteka będzie szukać pliku w katalogu $HOME:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

Konfiguracja ze zmiennymi środowiskowymi

Całą konfigurację klienta możesz przechowywać w postaci zmiennych środowiskowych, które będą odczytywane przy użyciu metody load_from_env klienta. Zmienne środowiskowe powinny mieć taką samą nazwę jak zdefiniowane w pliku google-ads.yaml, ale być zapisane wielkimi literami i mieć przedrostek przestrzeni nazw GOOGLE_ADS_. Na przykład zapis client_id powinien być zapisany jako GOOGLE_ADS_CLIENT_ID.

Zmienne środowiskowe zwykle definiuje się w pliku konfiguracji bash, takim jak plik .bashrc lub .bash_profile, który znajduje się w katalogu $HOME. Można je też definiować za pomocą wiersza poleceń. Pamiętaj, że te instrukcje przyjęto, że używasz bash. Jeśli używasz innej powłoki, być może trzeba będzie zapoznać się z dokumentacją dotyczącą ustawiania zmiennych środowiskowych w używanej powłoce.

Oto podstawowe czynności pozwalające zdefiniować zmienną środowiskową za pomocą pliku .bashrc za pomocą terminala:

# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
$ echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc
# Update your bash environment to use the most recently updated
# version of your .bashrc file.
$ src ~/.bashrc

Zmienne środowiskowe można też ustawić w instancji terminala bezpośrednio z poziomu wiersza poleceń:

$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890

Metoda load_from_env wczytuje dane konfiguracji z atrybutu environ we wbudowanym module os Pythona. Na przykład:os.environ["GOOGLE_ADS_CLIENT_ID"]

Oto przykład zainicjowania instancji klienta z konfiguracją ze zmiennych środowiskowych:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_env()

Aby można było skonfigurować logging przy użyciu zmiennych środowiskowych, wartość konfiguracji musi być obiektem JSON zgodnym ze strukturą kluczy YAML w przykładowym pliku konfiguracji google-ads.yaml.

Oto przykład, jak można to ustawić za pomocą pliku .bashrc:

export GOOGLE_ADS_LOGGING='{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
    "default_fmt": {
      "format": "[%(asctime)s - %(levelname)s] %(message).5000s",
      "datefmt": "%Y-%m-%d %H:%M:%S"
    }
  },
  "handlers": {
    "default_handler": {
      "class": "logging.StreamHandler",
      "formatter": "default_fmt"
    }
  },
  "loggers": {
    "": {
      "handlers": ["default_handler"],
      "level": "INFO"
    }
  }
}'

Konfiguracja przy użyciu ciągu znaków YAML

Jeśli plik YAML został odczytany w pamięci, możesz przekazać go bezpośrednio klientowi podczas inicjowania. Aby to zrobić, użyj metody load_from_string.

from google.ads.googleads.client import GoogleAdsClient

with open("/path/to/yaml", "rb") as handle:
    yaml = handle.read()

client = GoogleAdsClient.load_from_string(yaml)

Konfiguracja przy użyciu dodatku dict

Obiekt dict możesz przekazać bezpośrednio do metody load_from_dict. Na przykład:

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "developer_token": "abcdef123456",
    "refresh_token": "1//0abcdefghijklABCDEF",
    "client_id": "123456-abcdef.apps.googleusercontent.com",
    "client_secret": "aBcDeFgHiJkL"}

client = GoogleAdsClient.load_from_dict(credentials)

Pola konfiguracji

Konfiguracja biblioteki klienta obsługuje poniższe pola.

Pola ogólne (te nazwy są takie same niezależnie od tego, czy używasz konfiguracji YAML czy dykta):

Pola ogólne jako zmienne środowiskowe:

  • GOOGLE_ADS_CONFIGURATION_FILE_PATH
  • GOOGLE_ADS_REFRESH_TOKEN
  • GOOGLE_ADS_CLIENT_ID
  • GOOGLE_ADS_CLIENT_SECRET
  • GOOGLE_ADS_DEVELOPER_TOKEN
  • GOOGLE_ADS_LOGIN_CUSTOMER_ID
  • GOOGLE_ADS_LINKED_CUSTOMER_ID
  • GOOGLE_ADS_JSON_KEY_FILE_PATH (dawniej GOOGLE_ADS_PATH_TO_PRIVATE_KEY_FILE)
  • GOOGLE_ADS_IMPERSONATED_EMAIL (dawniej GOOGLE_ADS_DELEGATE_ACCOUNT)
  • GOOGLE_ADS_LOGGING
  • GOOGLE_ADS_HTTP_PROXY
  • GOOGLE_ADS_USE_PROTO_PLUS

Pola logowania, które są polami znajdującymi się pod polem konfiguracji logging, pochodzą bezpośrednio z modułu wbudowanego logging.config, ponieważ biblioteka przekazuje wszystkie pola z przestrzeni nazw logging bezpośrednio do metody logging.config.dictConfig. Szczegółowe informacje znajdziesz w przewodniku dotyczącym rejestrowania.

  • version: wartość całkowita określająca wersję schematu.
  • disable_existing_loggers: określa, czy rejestratory skonfigurowane w innym miejscu aplikacji mają zostać wyłączone.
  • formatters: słowniki definiujące różne rodzaje formatów.
  • handlers: słowniki definiujące różne moduły obsługi, które określają, gdzie są zapisywane logi i które moduły formatujące mają być używane.
  • loggers: słowniki definiujące różne typy rejestratorów, m.in. moduł obsługi i poziom logu.