feat: integrate CircuitBreakerService and adjust request timeout and queue management for improved API stability

This commit is contained in:
Julien Froidefond
2025-10-21 21:27:18 +02:00
parent ac62ba6d60
commit 66fbf98d54
3 changed files with 95 additions and 6 deletions

View File

@@ -22,6 +22,12 @@ class RequestQueue {
async enqueue<T>(execute: () => Promise<T>): Promise<T> {
return new Promise<T>((resolve, reject) => {
// Limiter la taille de la queue pour éviter l'accumulation
if (this.queue.length >= 50) {
reject(new Error('Request queue is full - Komga may be overloaded'));
return;
}
this.queue.push({ execute, resolve, reject });
this.processQueue();
});
@@ -45,8 +51,9 @@ class RequestQueue {
}
try {
// Délai de 200ms entre chaque requête pour espacer la charge CPU sur Komga
await this.delay(200);
// Délai adaptatif : plus long si la queue est pleine
const delayMs = this.queue.length > 10 ? 500 : 200;
await this.delay(delayMs);
const result = await request.execute();
request.resolve(result);
} catch (error) {