gpt4 book ai didi

heroku - 具有结果的异步工作队列的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 11:44:13 25 4
gpt4 key购买 nike

我在 heroku 上有一个 REST 服务器。它将有用于 REST 服务的 N-dynos 和用于 worker 的 N-dynos。

本质上,我有一些长时间运行的休息请求。当这些进来时,我想将它们委托(delegate)给其中一名工作人员,并为客户端提供重定向以轮询操作并最终返回操作结果。

为此,我将使用 RedisToGo 的 JEDIS/REDIS。据我所知,有两种方法可以做到这一点。

  1. 我可以使用 PUB/SUB 功能。让发布者为工作结果创建唯一标识,并在重定向 URI 中将这些标识返回给 REST 客户端。
  2. 本质上是一样的,但使用 RPUSH/BLPOP 代替 PUB/SUB。

我不确定#1 的优势是什么。例如,如果我有一个名为 LongMathOperation 的任务,我似乎可以简单地为此列出一个列表。列表元素是 JSON 对象,它们具有数学运算参数以及由 REST 服务器生成的用于放置结果的 UUID。然后所有的 worker dynos 都会有阻塞的 BLPOP 调用,第一个会得到工作,处理它,并使用 UUID 的键将结果放在 REDIS 中。

有道理吗?所以我的问题是“为什么使用 PUB/SUB 会比这更好?” PUB/SUB 带来了什么我所缺少的?

谢谢!

最佳答案

我也会使用列表,因为 pubsub 消息不是持久的。如果您没有订阅者,则消息将丢失。换句话说,如果出于某种原因您没有任何工作人员在听,那么客户将无法得到适当的服务。另一方面,列表是持久的。但是出于同样的原因,pubsub 显然不像列表占用那么多内存:没有什么可存储的。

关于heroku - 具有结果的异步工作队列的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092502/

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