Background Completion Jobs
In this lesson, you'll learn how to submit long-running OpenAI response jobs to be processed in the background, ideal for large outputs like novels or reports.
Prerequisites
Install the OpenAI SDK:
pip install openai
The Code
from openai import OpenAI
from time import sleep
client = OpenAI()
resp = client.responses.create(
model="gpt-4o-mini",
input="Write a very long novel about otters in space.",
background=True,
)
print(f"Response ID: {resp.id} - Status: {resp.status}")
while resp.status in {"queued", "in_progress"}:
print(f"Current status: {resp.status}")
sleep(2)
resp = client.responses.retrieve(resp.id)
print(f"Final status: {resp.status}\nOutput:\n{resp.output_text}")
Explanation
background=True: Tells the API to process the job asynchronously.resp.status: Helps track progress (queued,in_progress,completed, etc.).client.responses.retrieve(resp.id): Refreshes the response status.sleep(2): Avoids spamming API calls while polling.
Use Case
Ideal for:
- Long creative writing tasks
- Heavy processing jobs
- Deferred output in serverless or job-queue setups