From c49dec9567e2d5ceb3ae2e4f6c8995db146ef3b4 Mon Sep 17 00:00:00 2001 From: Lichao Chen Date: Thu, 9 Jul 2026 10:05:40 -0700 Subject: [PATCH] fix: preserve empty dict handler output --- runpod/serverless/modules/rp_job.py | 3 --- .../test_modules/test_fastapi.py | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/runpod/serverless/modules/rp_job.py b/runpod/serverless/modules/rp_job.py index a45cebc6..4e9f3750 100644 --- a/runpod/serverless/modules/rp_job.py +++ b/runpod/serverless/modules/rp_job.py @@ -279,9 +279,6 @@ async def run_job(handler: Callable, job: Dict[str, Any]) -> Dict[str, Any]: else: run_result = {"output": job_output} - if run_result.get("output") == {}: - run_result.pop("output") - check_return_size(run_result) # Checks the size of the return body. except Exception as err: diff --git a/tests/test_serverless/test_modules/test_fastapi.py b/tests/test_serverless/test_modules/test_fastapi.py index 4830b9df..938d9ab4 100644 --- a/tests/test_serverless/test_modules/test_fastapi.py +++ b/tests/test_serverless/test_modules/test_fastapi.py @@ -198,6 +198,17 @@ def test_runsync(self): "output": {"result": "success"}, } + empty_handler = Mock(return_value={}) + empty_worker_api = rp_fastapi.WorkerAPI({"handler": empty_handler}) + empty_runsync_return = asyncio.run( + empty_worker_api._sim_runsync(default_input_object) + ) + assert empty_runsync_return == { + "id": "test-123", + "status": "COMPLETED", + "output": {}, + } + # Test with generator handler def generator_handler(job): del job @@ -330,6 +341,16 @@ def test_status(self): "output": {"result": "success"}, } + empty_handler = Mock(return_value={}) + empty_worker_api = rp_fastapi.WorkerAPI({"handler": empty_handler}) + asyncio.run(empty_worker_api._sim_run(default_input_object)) + empty_status_return = asyncio.run(empty_worker_api._sim_status("test-123")) + assert empty_status_return == { + "id": "test-123", + "status": "COMPLETED", + "output": {}, + } + # Test webhook caller sent asyncio.run(worker_api._sim_run(input_object_with_webhook)) asyncio.run(worker_api._sim_status("test-123"))