[英]Best approach to tackle long polling in server side
我有一个用例,我需要每 1 秒轮询一次 API(基本上是无限的 while 循环)。 轮询将由用户通过外部系统动态发起。 这意味着可以同时运行多个轮询。 当 API 返回 400 时,轮询将完成。无论如何,我当前的实现看起来像:
问题是当某个轮询进程持续很长时间时,另一个进程只是坐在队列中。 我希望能够在并发进程中进行所有轮询。
解决这个问题的最佳方法是什么? 解雇多个工人?
如果可能有超过 100 个并发进程怎么办。
您可以实现一个“加权”/优先级队列。 可能有多种实现方式,但我想到的最简单的例子是使用最小或最大堆。
您应该跟踪每个进程的队列中有多少事件,随着一个进程的事件数量的增加,新插入事件的权重应该减少。 每次处理一个事件时,您都会开始处理以下权重最大的事件。
PS 更多的工人也会加快工作速度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.