Допустим, у меня есть большой набор пользователей в очереди, и я периодически опрашиваю каждого пользователя по ограниченному по скорости API. После того, как все пользователи будут опрошены, процесс перезапускается. Ограничение скорости применяется таким образом, что я не могу проверить всех пользователей в течение разумного периода времени (› 1 день, чтобы проверить всех).
Каждый раз, когда я проверяю пользователя, я могу проверить, когда он был в последний раз активен. Если пользователь был активен в последнее время (скажем, последние несколько дней), то он должен иметь приоритет над пользователями, которые вообще не были активны (› год). Однако вероятность запроса неактивного пользователя все же должна быть больше 0. Существуют ли какие-либо существующие исследования/методы эффективного управления этой очередью?
В настоящее время я думаю, что это простая очередь приоритетов, и начальное значение пользователя должно быть временем, когда они были в последний раз активны. Каждый раз, когда запрашивается пользователь, его позиция в очереди заменяется датой его последней активности + некоторое случайное число, сгенерированное из распределения, чтобы в конечном итоге можно было проверить всех пользователей.