Das folgende Beispiel zeigt, wie die API mit dem Python-requests
aufgerufen wird.
mithilfe eines API-Schlüssels zur Authentifizierung. Dabei gilt:
- Installieren Sie die Python-Bibliothek
requests
. Über die Befehlszeile:pip install requests
. - Speichern Sie das folgende Python-Programm auf Ihrem Computer und nennen Sie es
example.py
. - Speichern Sie die Datei example_request.json im selben Verzeichnis wie Ihre (dies ist ein Beispiel für eine JSON-Anfrage).
- Erstellen Sie eine
credentials.json
-Datei im selben Verzeichnis wie Ihr Programm mit{"key": "your_api_key"}
- Führen Sie das Beispiel über die Befehlszeile aus:
python example.py
.
# example.py
import json
import requests
def run_example():
"""Calls the OR API to solve a shift scheduling problem."""
# Endpoint for the workforce scheduling solver in the OR API.
end_point = "https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling"
# Read the API Key from a JSON file with the format:
# {"key": "your_api_key"}
with open("credentials.json") as f:
credentials = json.load(f)
api_key = credentials["key"]
# Load the JSON file with the request.
with open("example_request.json", "r") as f:
json_request = json.load(f)
# Call the API post method.
response = requests.post(f"{end_point}?key={api_key}", json=json_request)
# Process the response.
if response.ok:
solution = json.loads(response.content)
with open("example_response.json", "w") as f:
json.dump(solution, f, indent=2)
print(solution)
else:
error = json.loads(response.content)["error"]
print(f'Status code {error["code"]}: {error["message"]}')
if __name__ == "__main__":
run_example()
So legen Sie Fristen fest
Ein Termin gibt die maximale Zeit an, die ein API-Aufruf dauern darf. Ein Nutzer kann sowohl Client- als auch Serverfristen festlegen. Im Zusammenhang mit der OR API ist ein Server-Termin sinnvoller, da er dem Backend-Server mitteilt, wie viel Zeit er hat, eine Anfrage zu erhalten, den zugrunde liegenden Solver auszuführen und eine Antwort zurückzugeben. Mit Fristen für den Client können Sie dagegen die maximale Zeit festlegen, die die Clientanwendung (d. h. die Anwendung, die die OR API aufruft) auf eine Antwort wartet, bevor eine Zeitüberschreitung auftritt.
Das folgende Code-Snippet legt sowohl ein Client- als auch ein Server-Zeitlimit im
Sitzungsheader der Anfrage. Die Frist für den Client ist auf 60 Sekunden festgelegt. Die
Server-Frist sollte kürzer sein als die Client-Frist zur Berücksichtigung
Kommunikationsaufwand. Hier haben wir den Servertermin auf 95 % des Kundentermins festgelegt. Dies kann je nach Anwendung variieren. Beachten Sie, dass die API
Der Schlüssel wurde auch in die Sitzungsheader verschoben, um den session.post(...)
-Aufruf auszuführen
sauberer machen.
# Call the API post method.
session = requests.Session()
client_deadline_seconds = 60
server_deadline_seconds = 0.95 * client_deadline_seconds
session.headers = {
"Content-Type": "application/json",
"Connection": "keep-alive",
"Keep-Alive": f"timeout={client_deadline_seconds}, max=1",
"X-Server-Timeout": f"{server_deadline_seconds}",
"X-Goog-Api-Key": api_key,
}
response = session.post(end_point, json=json_request, timeout=client_deadline_seconds)