public class RateLimiter { Map requestsMap; int threshold; long timeWindow; int noOfRequestsServed; RateLimiter(int _threshold, int timeWindow, TimeUnit unit){ requestsMap = new HashMap(); threshold = _threshold; this.timeWindow = unit.toMillis(timeWindow); noOfRequestsServed = 0; }
public synchronized boolean canAccept(String userId){ long currentTime = System.currentTimeMillis(); if(!requestsMap.containsKey(userId)) { requestsMap.computeIfAbsent(userId, k -> new LinkedList()).add(new Request(userId, currentTime)); noOfRequestsServed++; return true; }
private synchronized void evict(String userId, long currentTime) { // System.out.println("Thread used for eviction is " + Thread.currentThread().getName()); Queue userRequestList = requestsMap.get(userId); while(!userRequestList.isEmpty() && userRequestList.peek().getTime() + timeWindow < currentTime){ userRequestList.poll(); } requestsMap.put(userId, userRequestList); }
public static void main(String[] args) throws InterruptedException { RateLimiter limiter = new RateLimiter(5, 10, TimeUnit.SECONDS); ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(() -> { for(int i = 0; i { for(int i = 0; i { for(int i = 0; i
Опробована ли идея использования контекстных переменных для хранения изменяемого контейнера?
В процессе, который имеет множество параметров инициализации. Некоторые из них устанавливаются при запуске из configparser, однако другие изменяются только...
Опробована ли идея использования контекстных переменных для хранения изменяемого контейнера?
В процессе, имеющем множество параметров инициализации. Некоторые из них устанавливаются при запуске из configparser, однако другие изменяются только после...
Я новый пользователь OpenAI API. Я написал скрипт Python, который помещает текст в файл .txt, а затем передает этот текстовый файл вместе с приглашением в поток OpenAI. Насколько я могу судить, этот процесс работает так, как я и ожидал, когда я...