基本的 Rails 应用程序还需要像 Sidekiq 这样的工作宝石吗

问题描述 投票:0回答:1

从 Rails 7.1 开始,Puma 将自动生成 x 个工作线程,其中 x 是可用处理器的数量。

这就提出了如何在简单的 Docker 化 Rails 生产应用程序中处理工作人员的问题。

对于一个简单的 Rails 应用程序,偶尔会异步发送一些邮件并定期清理一些 ActiveRecord Blob,是否还需要像 Sidekiq 这样的工作 Gem?或者 Puma 的默认配置足以完成工作吗?

ruby-on-rails web-worker puma
1个回答
0
投票

如果您的应用程序非常简单,并且不需要任何类型的队列持久性和/或崩溃安全机制,您可以依赖 Rail 的 ActiveJob 并将其设置为使用主进程的 RAM,而不是任何第三方队列系统(如 Sidekiq) .

请注意,Sidekiq 不仅可以为您的应用程序提供多线程处理。它可以利用 Redis/Memcached 为您的工作例程提供一定的一致性和持久性,因此,例如,如果您的主应用程序崩溃并且您仅使用 ActiveJob 并将队列保留在内存中,您将丢失仍待执行的每个作业。如果您使用 Sidekiq 并且您的主应用程序崩溃了,您的作业定义仍然会保留,您不会丢失任何内容。

所以答案是肯定的,您可以仅使用 Rails 内置的 ActiveJob 执行异步作业,而不使用 Sidekiq 或类似工具,但根据您的用例,不建议这样做。

© www.soinside.com 2019 - 2024. All rights reserved.