En el siguiente ejemplo, se muestra cómo llamar a la API con el requests
de Python
con una clave de API para la autenticación. Para usarlo, realiza los pasos siguientes:
- Instala la biblioteca
requests
de Python. Desde tu línea de comandos:pip install requests
. - Guarda el siguiente programa de Python en tu computadora y asígnale el nombre
example.py
. - Guarda el archivo example_request.json en el mismo directorio que tu programa (esta es una solicitud JSON de ejemplo).
- Crea un archivo
credentials.json
en el mismo directorio que tu programa, con{"key": "your_api_key"}
- Ejecuta el ejemplo desde la línea de comandos:
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/shipping:designShippingNetwork"
# 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()
¿Cómo se establecen plazos?
Una fecha límite determina el tiempo máximo que debe tener una llamada a la API. Un usuario puede establecer plazos tanto del cliente como del servidor. En el contexto de la API de OR, una fecha límite del servidor es la más útil, ya que le informa al servidor de backend cuánto tiempo tiene para recibir una solicitud, ejecutar el solucionador subyacente y mostrar una respuesta. Por el contrario, las fechas límite del cliente son útiles para establecer el tiempo máximo que la aplicación cliente (es decir, la aplicación que llama a la API de OR) esperará una respuesta antes de que se agote el tiempo de espera.
El siguiente fragmento de código establece un plazo de cliente y de servidor en la
encabezados de sesión de la solicitud. El plazo del cliente está configurado en 60 segundos. El
el plazo del servidor debe ser menor que el plazo del cliente para tenerlo
la sobrecarga de comunicación. Aquí fijamos el plazo del servidor para que sea del 95% del cliente
la fecha límite, pero esto puede variar según la postulación. Ten en cuenta que la API
también se movió a los encabezados de la sesión para hacer la llamada a session.post(...)
limpia.
# 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)