{"record":{"id":"0eaaeae2b9c050ac","repo":"BerriAI/litellm","slug":"runwayml-task-polling-timed-out-after-timeout-sec","errorCode":null,"errorMessage":"RunwayML task polling timed out after {timeout_secs} seconds","messagePattern":"RunwayML task polling timed out after (.+?) seconds","errorType":"exception","errorClass":"TimeoutError","httpStatus":null,"severity":"error","filePath":"litellm/llms/runwayml/image_generation/transformation.py","lineNumber":153,"sourceCode":"                        )\n                    )\n\n        return model_response\n\n    @staticmethod\n    def _check_timeout(start_time: float, timeout_secs: float) -> None:\n        \"\"\"\n        Check if operation has timed out.\n\n        Args:\n            start_time: Start time of the operation\n            timeout_secs: Timeout duration in seconds\n\n        Raises:\n            TimeoutError: If operation has exceeded timeout\n        \"\"\"\n        if time.time() - start_time > timeout_secs:\n            raise TimeoutError(f\"RunwayML task polling timed out after {timeout_secs} seconds\")\n\n    @staticmethod\n    def _check_task_status(response_data: dict[str, Any]) -> str:\n        \"\"\"\n        Check RunwayML task status from response.\n\n        RunwayML statuses: PENDING, RUNNING, SUCCEEDED, FAILED, CANCELLED, THROTTLED\n\n        Args:\n            response_data: JSON response from RunwayML task endpoint\n\n        Returns:\n            Normalized status string: \"running\", \"succeeded\", or raises on failure\n\n        Raises:\n            ValueError: If task failed or status is unknown\n        \"\"\"\n        status: Final = response_data.get(\"status\", \"\").upper()","sourceCodeStart":135,"sourceCodeEnd":171,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/runwayml/image_generation/transformation.py#L135-L171","documentation":"Poll-loop timeout in the RunwayML image-generation handler: elapsed time since start_time exceeded timeout_secs while the task was still in a non-terminal state, so a TimeoutError is raised instead of polling forever.","triggerScenarios":"Triggered when polling a RunwayML image generation task exceeds the configured timeout.","commonSituations":"See trigger scenarios.","solutions":["Increase the polling timeout for long-running image tasks.","Check RunwayML service status if tasks never complete."],"exampleFix":"litellm.image_generation(..., timeout=300)","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}