SilentWraith commited on
Commit
2bcccbf
·
verified ·
1 Parent(s): b5c0489

Update app/routers/screenshot/screenshot.py

Browse files

Test file streaming for speed up and reuse instance

app/routers/screenshot/screenshot.py CHANGED
@@ -5,7 +5,7 @@ import logging
5
  from core.service.playwright import AsyncPlaywrightContext, TimeoutError
6
  from core.service.playwright.models import PageModel, ScreenshotModel
7
  from fastapi import APIRouter, HTTPException
8
- from fastapi.responses import Response
9
 
10
  router = APIRouter()
11
  playwright_context = AsyncPlaywrightContext()
@@ -20,11 +20,11 @@ async def screenshot(
20
  async with playwright_context as sc:
21
  try:
22
  response = await sc.screenshot(screenshot_model=screenshot_model, page_model=page_model)
23
- return Response(content=response, media_type="image/png")
24
  except TimeoutError as e:
25
  status_code = 504 if isinstance(e, TimeoutError) else 400
26
  detail = f"An error occurred while generating the screenshot: {e}"
27
  raise HTTPException(status_code=status_code, detail=detail) from e
28
  except Exception as e:
29
  logging.exception("Unhandled error in screenshot generation")
30
- raise HTTPException(status_code=500, detail="An unexpected error occurred") from e
 
5
  from core.service.playwright import AsyncPlaywrightContext, TimeoutError
6
  from core.service.playwright.models import PageModel, ScreenshotModel
7
  from fastapi import APIRouter, HTTPException
8
+ from fastapi.responses import Response, StreamingResponse
9
 
10
  router = APIRouter()
11
  playwright_context = AsyncPlaywrightContext()
 
20
  async with playwright_context as sc:
21
  try:
22
  response = await sc.screenshot(screenshot_model=screenshot_model, page_model=page_model)
23
+ return StreamingResponse(content=response, media_type="image/png")
24
  except TimeoutError as e:
25
  status_code = 504 if isinstance(e, TimeoutError) else 400
26
  detail = f"An error occurred while generating the screenshot: {e}"
27
  raise HTTPException(status_code=status_code, detail=detail) from e
28
  except Exception as e:
29
  logging.exception("Unhandled error in screenshot generation")
30
+ raise HTTPException(status_code=500, detail="An unexpected error occurred") from e