Cleanup scanner processing span

This commit is contained in:
Zoe Roux 2025-11-23 15:19:04 +01:00
parent 3602905e86
commit c5fa3ecb01
No known key found for this signature in database

View File

@ -101,6 +101,7 @@ class RequestProcessor:
finally: finally:
self._processing = False self._processing = False
@tracer.start_as_current_span("process video")
async def process_request(self): async def process_request(self):
cur = await self._database.fetchrow( cur = await self._database.fetchrow(
""" """
@ -128,43 +129,44 @@ class RequestProcessor:
return False return False
request = Request.model_validate(cur) request = Request.model_validate(cur)
with tracer.start_as_current_span(f"process {request.title}") as span: span = trace.get_current_span()
logger.info(f"Starting to process {request.title}") span.update_name(f"process {request.title}")
try: logger.info(f"Starting to process {request.title}")
show = await self._run_request(request) try:
finished = await self._database.fetchrow( show = await self._run_request(request)
""" finished = await self._database.fetchrow(
delete from scanner.requests """
where pk = $1 delete from scanner.requests
returning where pk = $1
videos returning
""", videos
request.pk, """,
request.pk,
)
if finished and finished["videos"] != request.videos:
videos = TypeAdapter(list[Request.Video]).validate_python(
finished["videos"]
) )
if finished and finished["videos"] != request.videos: await self._client.link_videos(
videos = TypeAdapter(list[Request.Video]).validate_python( "movie" if request.kind == "movie" else "serie",
finished["videos"] show.slug,
) videos,
await self._client.link_videos(
"movie" if request.kind == "movie" else "serie",
show.slug,
videos,
)
except Exception as e:
span.set_status(trace.Status(trace.StatusCode.ERROR))
span.record_exception(e)
logger.error("Couldn't process request", exc_info=e)
cur = await self._database.execute(
"""
update
scanner.requests
set
status = 'failed'
where
pk = $1
""",
request.pk,
) )
except Exception as e:
span.set_status(trace.Status(trace.StatusCode.ERROR))
span.record_exception(e)
logger.error("Couldn't process request", exc_info=e)
cur = await self._database.execute(
"""
update
scanner.requests
set
status = 'failed'
where
pk = $1
""",
request.pk,
)
return True return True
async def _run_request(self, request: Request) -> Resource: async def _run_request(self, request: Request) -> Resource: