Skip to content

Commit 8009233

Browse files
committed
better error handling
1 parent 1d1f9c9 commit 8009233

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

runpod/serverless/modules/rp_fastapi.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,17 +353,28 @@ def _background_job_runner(self):
353353

354354
def run_async_generator(gen):
355355
results = []
356+
error_encountered = None
356357
async def consume():
358+
nonlocal error_encountered
357359
async for stream_output in gen:
358-
results.append(stream_output["output"])
360+
# Check if this is an error output
361+
if stream_output.get("status") == "error":
362+
error_encountered = stream_output.get("error", "Unknown error")
363+
break
364+
# Only append if there's an output key
365+
if "output" in stream_output:
366+
results.append(stream_output["output"])
359367
loop = asyncio.new_event_loop()
360368
asyncio.set_event_loop(loop)
361369
loop.run_until_complete(consume())
362370
loop.close()
363-
return results
371+
372+
if error_encountered:
373+
return {"error": error_encountered}
374+
return {"output": results}
364375

365-
generator_output = run_job_generator(self.config["handler"], job.getDictCopy())
366-
job_output = {"output": run_async_generator(generator_output)}
376+
generator_result = run_async_generator(run_job_generator(self.config["handler"], job.getDictCopy()))
377+
job_output = generator_result
367378
else:
368379
loop = asyncio.new_event_loop()
369380
asyncio.set_event_loop(loop)

0 commit comments

Comments
 (0)