From e04d63a9bbc426effedc03f3b254edde01599ac8 Mon Sep 17 00:00:00 2001 From: j Date: Sun, 31 Mar 2024 01:20:14 -0400 Subject: [PATCH] adjusted session manager for max API calls in any period For now will reply to every comment given enoug time even if severely rate limited --- src/rdrama/session/SessionManager.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/rdrama/session/SessionManager.ts b/src/rdrama/session/SessionManager.ts index 4dd79b2..6bce2b8 100644 --- a/src/rdrama/session/SessionManager.ts +++ b/src/rdrama/session/SessionManager.ts @@ -26,7 +26,13 @@ class SessionManager { enableOfflineQueue: true }, maxConcurrent: 1, // Maximum number of concurrent requests - minTime: 1000 // Minimum time between dispatches of requests in milliseconds + minTime: 1000, // Minimum time between dispatches of requests in milliseconds + reservoir: 41, // Initial reservoir value for the first hour + reservoirRefreshAmount: 41, // Reservoir value to reset to every hour + reservoirRefreshInterval: 60 * 60 * 1000, // Interval to reset the reservoir (1 hour in milliseconds) + //For now will reply to every comment given enoug time even if severely rate limited + //highWater: 5, // Maximum number of queued jobs. + //strategy: Bottleneck.strategy.OVERFLOW_PRIORITY // Strategy to drop the oldest jobs in the queue when highWater is reached }); this.axiosInstance = axios.create({ @@ -82,13 +88,13 @@ class SessionManager { // Wrap the post method const originalPost = instance.post; instance.post = >(url: string, data?: any, config?: AxiosRequestConfig): Promise => { - return this.limiter.schedule(() => originalPost.apply(instance, [url, data, config])) as Promise; + return this.limiter.schedule({ priority: 1 }, () => originalPost.apply(instance, [url, data, config])) as Promise; }; // Wrap the put method const originalPut = instance.put; instance.put = >(url: string, data?: any, config?: AxiosRequestConfig): Promise => { - return this.limiter.schedule(() => originalPut.apply(instance, [url, data, config])) as Promise; + return this.limiter.schedule({ priority: 1 }, () => originalPut.apply(instance, [url, data, config])) as Promise; }; // Wrap the delete method