Wie kann ich eine Foundry-API aus Code-Repositorys aufrufen?

Sep 19 2020

Wie kann eine interne Foundry-API aus einem Code-Repository mithilfe einer Python-Transformation korrekt aufgerufen werden?

Antworten

1 icharbon Sep 19 2020 at 03:12

Diese Funktion ist standardmäßig nicht in jedem Code-Repository verfügbar. Sie sollten Ihren Plattformadministrator bitten, diese Funktion auf Repository-Basis zu aktivieren.

Sobald das Repository in die Whitelist aufgenommen wurde, können Sie die Python-Anforderungsbibliothek in Ihrem Code-Repository verwenden, um den API-Aufruf zu erstellen und das Benutzertoken aus dem transform_context abzurufen. Hier ist ein Code-Snippet als Beispiel:

from transforms.api import transform_df, Output
import requests

@transform_df(
Output("/your/output/table"),
)
def my_compute_function(ctx):

  # Construct the URL for the GET request
  url = "https://fourndy_url.com/service_url/api/..."


  # Authentication
  bearer_token = ctx.auth_header
  header = {'Authorization': bearer_token, 'Content-Type': 'application/json'}


  # Get the response
  response = requests.get(url, headers=header).json()
1 blake Sep 25 2020 at 13:59

Um den obigen Beitrag von @ icharbon zu erweitern, empfehle ich, die timeoutEigenschaft für Python- requestsAufrufe festzulegen . Ohne dies kann eine hängende HTTP-Anforderung dazu führen, dass Ihr Pyspark-Job hängen bleibt.

from transforms.api import transform_df, Output
import requests


@transform_df(
Output("/your/output/table"),
)
def my_compute_function(ctx):

  # Construct the URL for the GET request
  url = "https://fourndy_url.com/service_url/api/..."


  # Authentication
  bearer_token = ctx.auth_header
  header = {'Authorization': bearer_token, 'Content-Type': 'application/json'}


  # Get the response
  response = requests.get(url, headers=header, timeout=10.0).json()

Weitere Informationen zum Timeout-Parameter und anderen optionalen Parametern finden Sie hier .