Wie kann ich eine Foundry-API aus Code-Repositorys aufrufen?
Wie kann eine interne Foundry-API aus einem Code-Repository mithilfe einer Python-Transformation korrekt aufgerufen werden?
Antworten
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()
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 .