gpt4 book ai didi

python - 解决服务器端长轮询的最佳方法

转载 作者:行者123 更新时间:2023-12-05 07:14:43 26 4
gpt4 key购买 nike

我有一个用例,我需要每 1 秒轮询一次 API(基本上是无限的 while 循环)。轮询将由用户通过外部系统动态启动。这意味着可以同时运行多个轮询。当 API 返回 400 时,轮询将完成。无论如何,我当前的实现类似于:

  1. 部署在 heroku 上的 Flask APP。
  2. Flask APP 有一个端点,外部系统调用该端点以开始轮询。
  3. 那个 flask 端点会将消息添加到队列中,一旦 worker 收到它,它就会开始轮询。我正在使用 Heroku Redis 去插件。在引擎盖下它使用 python-rq 和 redis。

问题是当某个轮询进程持续很长时间时,另一个进程只是坐在队列中。我希望能够在并发进程中完成所有轮询。

解决此问题的最佳方法是什么?启动多个 worker ?

如果可能有超过 100 个并发进程怎么办。

最佳答案

您可以实现“加权”/优先级队列。可能有多种实现方法,但我想到的最简单的示例是使用最小堆或最大堆。

您应该跟踪每个进程的队列中有多少事件,随着一个进程的事件数量的增加,新插入事件的权重应该降低。每次处理一个事件时,您都会开始处理下一个权重最大的事件。

PS 更多的 worker 也会加快工作速度。

关于python - 解决服务器端长轮询的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59781138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com