项目/AI生成链路合并
This commit is contained in:
@@ -107,7 +107,7 @@ def _log_image_response(record_id: str, response_data: dict, error: str | None =
|
||||
async def get_active_image_engine(db: AsyncSession) -> ImageEngine:
|
||||
result = await db.execute(
|
||||
select(ImageEngine)
|
||||
.where(ImageEngine.is_active == True)
|
||||
.where(ImageEngine.is_active == True, ImageEngine.deleted_at.is_(None))
|
||||
.order_by(ImageEngine.priority.desc())
|
||||
.limit(1)
|
||||
)
|
||||
@@ -455,12 +455,23 @@ async def poll_image_task_status(engine: ImageEngine, task_id: str) -> dict:
|
||||
}
|
||||
|
||||
|
||||
async def download_image(image_url: str, dest_path: str) -> str:
|
||||
async def download_image(
|
||||
image_url: str,
|
||||
dest_path: str,
|
||||
*,
|
||||
execution_guard=None,
|
||||
) -> str:
|
||||
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
|
||||
async with httpx.AsyncClient(timeout=300) as client:
|
||||
async with client.stream("GET", image_url) as response:
|
||||
response.raise_for_status()
|
||||
with open(dest_path, "wb") as file:
|
||||
chunk_no = 0
|
||||
async for chunk in response.aiter_bytes(chunk_size=8192):
|
||||
file.write(chunk)
|
||||
chunk_no += 1
|
||||
if execution_guard is not None and chunk_no % 32 == 0:
|
||||
await execution_guard()
|
||||
if execution_guard is not None:
|
||||
await execution_guard()
|
||||
return dest_path
|
||||
|
||||
Reference in New Issue
Block a user