Lewati ke konten utama

Siklus Hidup Pekerjaan Asinkron

Semua pekerjaan pembuatan AetherAI API diproses secara asinkron. Setelah membuat pekerjaan, Anda harus memeriksa statusnya melalui polling.

Membuat Pekerjaan

Saat mengirim permintaan POST, job_id akan segera dikembalikan. Pemrosesan gambar berlangsung di latar belakang.

Contoh Permintaan

curl -X POST "https://api.aetherforgeai.com/public/v1/generate/image" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A beautiful sunset over mountains",
"ai_model": "GPT Image 1.5"
}'

Contoh Respons

{
"job_id": "550e8400-e29b-41d4-a716-446655440000"
}

Polling Status Pekerjaan

Kirim permintaan GET dengan job_id yang dikembalikan untuk memeriksa status pekerjaan.

curl -X GET "https://api.aetherforgeai.com/public/v1/job/{job_id}" \
-H "Authorization: Bearer your_api_key_here"

Nilai Status

StatusDeskripsi
PendingPekerjaan sedang menunggu atau diproses
SucceedPekerjaan berhasil diselesaikan
FailedTerjadi kesalahan saat memproses pekerjaan

Contoh Respons Berdasarkan Status

Pending

{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "Pending",
"image_urls": []
}

Succeed

{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "Succeed",
"image_urls": [
"https://cdn.aetherforgeai.com/images/abc123.png",
"https://cdn.aetherforgeai.com/images/abc123.gif"
]
}

Failed

{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "Failed",
"image_urls": []
}

Strategi Polling

Kami merekomendasikan polling dengan interval berikut untuk memeriksa penyelesaian pekerjaan.

  • Polling awal: 1 detik setelah pembuatan pekerjaan
  • Interval berikutnya: 2-5 detik
  • Waktu polling maksimum: 1 menit (tergantung pada jenis pekerjaan)

Contoh Python

import time
import requests

def poll_job_status(job_id, api_key, max_attempts=60):
headers = {"Authorization": f"Bearer {api_key}"}

for attempt in range(max_attempts):
response = requests.get(
f"https://api.aetherforgeai.com/public/v1/job/{job_id}",
headers=headers
)
data = response.json()

if data["status"] == "Succeed":
return data["image_urls"]
elif data["status"] == "Failed":
raise Exception(f"Job failed: {data.get('error_message', 'Unknown error')}")

time.sleep(2)

raise TimeoutError("Job polling timed out")

Dokumen Terkait