User Rate Limit Exceeded
-
Really appreciated this plug-in but had some trouble with quotas being exceeded during busy periods
This problem is discussed on stackoverflow with the following offered as a solution:
public class ApilRateLimiter { private long timeSliceEnd; private final int quotaPerSecond; private int quotaRemaining; public ApilRateLimiter(final int quotaPerSecond) { this.quotaPerSecond = quotaPerSecond; this.quotaRemaining = quotaPerSecond; this.timeSliceEnd = System.currentTimeMillis() + 1_000L; } public void reserve(final int quotaReserved) throws InterruptedException { if (quotaReserved > quotaPerSecond) { throw new IllegalArgumentException( "reservation would never be successful as quota requested is greater than quota per second"); } final long currentTime = System.currentTimeMillis(); if (currentTime >= timeSliceEnd) { this.timeSliceEnd = currentTime + 1_000L; this.quotaRemaining = quotaPerSecond - quotaReserved; } else if (quotaReserved <= quotaRemaining) { quotaRemaining -= quotaReserved; } else { Thread.sleep(timeSliceEnd - currentTime); reserve(quotaReserved); } } }
and the definition for the Gmail quotas:
public interface GmailApiLimits { int QUOTA_PER_SECOND = 250; int DRAFTS_CREATE = 10; int DRAFTS_DELETE = 10; int DRAFTS_GET = 5; int DRAFTS_LIST = 5; int DRAFTS_SEND = 100; int DRAFTS_UPDATE = 15; int GETPROFILE = 1; int HISTORY_LIST = 2; int LABELS_CREATE = 5; int LABELS_DELETE = 5; int LABELS_GET = 1; int LABELS_LIST = 1; int LABELS_UPDATE = 5; int MESSAGES_ATTACHMENTS_GET = 5; int MESSAGES_BATCHDELETE = 50; int MESSAGES_DELETE = 10; int MESSAGES_GET = 5; int MESSAGES_IMPORT = 100; int MESSAGES_INSERT = 25; int MESSAGES_LIST = 5; int MESSAGES_MODIFY = 5; int MESSAGES_SEND = 100; int MESSAGES_TRASH = 5; int MESSAGES_UNTRASH = 5; int STOP = 50; int THREADS_DELETE = 20; int THREADS_GET = 10; int THREADS_LIST = 10; int THREADS_MODIFY = 10; int THREADS_TRASH = 10; int THREADS_UNTRASH = 10; int WATCH = 100; }
Any chance of adding this feature
- The topic ‘User Rate Limit Exceeded’ is closed to new replies.