检查队列中的用户:管理优先级的算法?

Checking Users in a Queue: Algorithm for managing Priority?

假设我在队列中有大量用户,我会定期根据 速率限制 API 查询每个用户。查询完所有用户后,将重新启动该过程。应用了速率限制,因此我无法在 合理的 时间内检查所有用户(> 1 天检查所有人)。

每次检查用户时,我都能检查他们上次活跃的时间。如果一个用户最近很活跃(比方说最近几天),那么他们应该优先于根本不活跃的用户(> 一年)。但是非活跃用户被查询到的概率应该还是大于0的。有没有现成的research/methods如何高效管理这个队列?

目前我在想的是做一个简单的优先级队列,让用户的初始值是他们上次激活的时间。任何时候查询用户时,他们在队列中的位置都会被替换为他们最后活跃的日期 + 从分布中生成的一些随机数,以便最终可以检查所有用户。

经过深思熟虑,我决定使用贝叶斯模型来推断每个用户的事件间隔时间。我假设 time-period 内每个用户的 activity 数量服从泊松分布。由此可见,每个事件之间的时间服从指数分布。对于速率参数,我假设它是伽马分布的。因此,后验分布是lomax分布。对于我添加到队列中的每个用户,我从后部抽样作为他们的新优先级#。当用户有最近的 activity 时,我会更新他们的 user-specific 超参数,然后重新采样一个新的优先级值。这使我可以灵活地根据数据调整每个用户的优先级,并为我没有任何信息的新用户设置优先级。