Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/celeste/providers/bfl/images/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import asyncio
import time
from collections.abc import AsyncGenerator
from json import JSONDecodeError
from typing import Any, ClassVar

from celeste.client import APIMixin
Expand Down Expand Up @@ -97,8 +98,12 @@ async def _make_request(
headers=poll_headers,
)

self._handle_error_response(poll_response)
poll_data = poll_response.json()
# A failed task can return a non-2xx response whose JSON body carries its status.
try:
poll_data = poll_response.json()
except (JSONDecodeError, UnicodeDecodeError):
self._handle_error_response(poll_response)
raise
status = poll_data.get("status")

if status == "Ready":
Expand All @@ -119,6 +124,7 @@ async def _make_request(
msg = f"{self.provider} image generation failed ({status}): {error_msg}"
raise ValueError(msg)

self._handle_error_response(poll_response)
await asyncio.sleep(config.POLLING_INTERVAL)

async def _make_stream_request(
Expand Down
Loading