mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-12-08 06:05:14 -05:00
Lock scanner processing to a single runner (#1170)
This commit is contained in:
commit
2cbbb450c2
@ -5,7 +5,7 @@
|
|||||||
"": {
|
"": {
|
||||||
"name": "api",
|
"name": "api",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@elysiajs/opentelemetry": "^1.4.6",
|
"@elysiajs/opentelemetry": "^1.4.7",
|
||||||
"@elysiajs/swagger": "zoriya/elysia-swagger#build",
|
"@elysiajs/swagger": "zoriya/elysia-swagger#build",
|
||||||
"@kubiks/otel-drizzle": "zoriya/drizzle-otel#build",
|
"@kubiks/otel-drizzle": "zoriya/drizzle-otel#build",
|
||||||
"@types/bun": "^1.3.1",
|
"@types/bun": "^1.3.1",
|
||||||
@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
"@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="],
|
"@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="],
|
||||||
|
|
||||||
"@elysiajs/opentelemetry": ["@elysiajs/opentelemetry@1.4.6", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/sdk-node": "^0.200.0" }, "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-jR7t4M6ZvMnBqzzHsNTL6y3sNq9jbGi2vKxbkizi/OO5tlvlKl/rnBGyFjZUjQ1Hte7rCz+2kfmgOQMhkjk+Og=="],
|
"@elysiajs/opentelemetry": ["@elysiajs/opentelemetry@1.4.7", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/sdk-node": "^0.200.0" }, "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-biJfj3bCHf7aYPB8EygvN90sEKR/qgPn8Cziq2ebJSGyY8cpmskTTP6zbUMkMk6R6rfpoP7ECZbXlTZz+7BfJA=="],
|
||||||
|
|
||||||
"@elysiajs/swagger": ["@elysiajs/swagger@github:zoriya/elysia-swagger#f88fbc7", { "dependencies": { "@scalar/themes": "^0.9.81", "@scalar/types": "^0.1.3", "openapi-types": "^12.1.3", "pathe": "^1.1.2" }, "peerDependencies": { "elysia": ">= 1.3.0" } }, "zoriya-elysia-swagger-f88fbc7"],
|
"@elysiajs/swagger": ["@elysiajs/swagger@github:zoriya/elysia-swagger#f88fbc7", { "dependencies": { "@scalar/themes": "^0.9.81", "@scalar/types": "^0.1.3", "openapi-types": "^12.1.3", "pathe": "^1.1.2" }, "peerDependencies": { "elysia": ">= 1.3.0" } }, "zoriya-elysia-swagger-f88fbc7"],
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
"format": "biome check --write ."
|
"format": "biome check --write ."
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@elysiajs/opentelemetry": "^1.4.6",
|
"@elysiajs/opentelemetry": "^1.4.7",
|
||||||
"@elysiajs/swagger": "zoriya/elysia-swagger#build",
|
"@elysiajs/swagger": "zoriya/elysia-swagger#build",
|
||||||
"@kubiks/otel-drizzle": "zoriya/drizzle-otel#build",
|
"@kubiks/otel-drizzle": "zoriya/drizzle-otel#build",
|
||||||
"@types/bun": "^1.3.1",
|
"@types/bun": "^1.3.1",
|
||||||
|
|||||||
@ -55,6 +55,7 @@ class RequestProcessor:
|
|||||||
self._database: Connection = None # type: ignore
|
self._database: Connection = None # type: ignore
|
||||||
self._client = client
|
self._client = client
|
||||||
self._providers = providers
|
self._providers = providers
|
||||||
|
self._processing = False
|
||||||
|
|
||||||
@tracer.start_as_current_span("listen_requests")
|
@tracer.start_as_current_span("listen_requests")
|
||||||
async def listen(self, tg: TaskGroup):
|
async def listen(self, tg: TaskGroup):
|
||||||
@ -85,14 +86,20 @@ class RequestProcessor:
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
async def process_all(self):
|
async def process_all(self):
|
||||||
found = True
|
if self._processing:
|
||||||
while found:
|
return
|
||||||
try:
|
self._processing = True
|
||||||
found = await self.process_request()
|
try:
|
||||||
except Exception as e:
|
found = True
|
||||||
logger.error(
|
while found:
|
||||||
"Failed to process one of the metadata request", exc_info=e
|
try:
|
||||||
)
|
found = await self.process_request()
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(
|
||||||
|
"Failed to process one of the metadata request", exc_info=e
|
||||||
|
)
|
||||||
|
finally:
|
||||||
|
self._processing = False
|
||||||
|
|
||||||
async def process_request(self):
|
async def process_request(self):
|
||||||
cur = await self._database.fetchrow(
|
cur = await self._database.fetchrow(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user