Contoh Penjadwalan Shift

Contoh berikut menunjukkan cara memanggil API dengan library requests Python, menggunakan kunci API untuk autentikasi. Untuk menggunakannya:

  • Instal library requests Python. Dari command line Anda: pip install requests.
  • Simpan program Python berikut ke komputer Anda, dan beri nama example.py.
  • Simpan file example_request.json di direktori yang sama dengan program Anda (ini adalah contoh permintaan JSON).
  • Buat file credentials.json dalam direktori yang sama dengan program Anda menggunakan {"key": "your_api_key"}
  • Jalankan contoh dari command line: 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()

Bagaimana cara menetapkan tenggat waktu?

Batas waktu menentukan waktu proses maksimum yang diperlukan untuk melakukan panggilan ke API. Pengguna dapat menetapkan tenggat waktu klien dan server. Dalam konteks OR API, tenggat waktu server adalah hal yang lebih berguna karena memberi tahu server backend tentang berapa waktu yang diperlukan untuk menerima permintaan, menjalankan pemecah masalah yang mendasarinya, dan menampilkan respons. Sebaliknya, batas waktu klien berguna untuk menetapkan waktu maksimum bagi aplikasi klien (yaitu, aplikasi yang memanggil OR API) untuk menunggu respons, sebelum waktu habis.

Cuplikan kode berikut menetapkan batas waktu klien dan server di header sesi permintaan. Batas waktu klien ditetapkan ke 60 detik. Batas waktu server harus kurang dari batas waktu klien untuk memperhitungkan overhead komunikasi. Di sini kita menetapkan batas waktu server menjadi 95% dari batas waktu klien, tetapi ini dapat bervariasi tergantung pada aplikasi. Perhatikan bahwa kunci API juga dipindahkan ke header sesi untuk membuat pembersih panggilan session.post(...).



# 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)