SilentWraith commited on
Commit
8844cda
·
verified ·
1 Parent(s): fccdd05

Update app/routers/screenshot/screenshot.py

Browse files
Files changed (1) hide show
  1. app/routers/screenshot/screenshot.py +19 -13
app/routers/screenshot/screenshot.py CHANGED
@@ -2,13 +2,14 @@ from __future__ import annotations
2
 
3
  import logging
4
 
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()
 
12
 
13
 
14
  @router.post("/screenshot", tags=["V1"])
@@ -17,14 +18,19 @@ async def screenshot(
17
  page_model: PageModel | None = None,
18
  ) -> Response:
19
  page_model = page_model if page_model else PageModel()
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/jpeg")
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
 
 
 
 
 
 
2
 
3
  import logging
4
 
5
+ from core.service.playwright import PlaywrightInstance, 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
+
12
+ playwright_instance = PlaywrightInstance()
13
 
14
 
15
  @router.post("/screenshot", tags=["V1"])
 
18
  page_model: PageModel | None = None,
19
  ) -> Response:
20
  page_model = page_model if page_model else PageModel()
21
+
22
+ await playwright_instance
23
+
24
+ try:
25
+ response = await playwright_instance.screenshot(
26
+ screenshot_model=screenshot_model, page_model=page_model,
27
+ )
28
+ return Response(content=response, media_type="image/png")
29
+ except TimeoutError as e:
30
+ status_code = 504 if isinstance(e, TimeoutError) else 400
31
+ detail = f"An error occurred while generating the screenshot: {e}"
32
+ raise HTTPException(status_code=status_code, detail=detail) from e
33
+ except Exception as e:
34
+ logging.exception("Unhandled error in screenshot generation")
35
+ raise HTTPException(status_code=500, detail="An unexpected error occurred") from e
36
+