gpt4 book ai didi

ruby-on-rails - 如果运行多个池,延迟作业会初始化多少个 Rails 实例

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:47 24 4
gpt4 key购买 nike

我正在使用如下池选项运行延迟作业:

bundle exec bin/delayed_job -m --pool=queue1 --pool=queue2 start

这会生成一个或多个 rails 实例吗? (即:它会为所有池生成一个实例还是每个池都有自己的 Rails 实例)?

在本地测试时,它似乎只为所有池生成一个 rails 实例。

但我想 100% 确认这一点(尤其是在生产方面)。

我尝试使用这些命令来查看 DJ 进程实际指向的内容:

ps aux, lsof, pstree

有人确切知道这是如何工作的,或者有什么简单的方法可以查明吗?我开始深入研究源代码,但发现有人可能知道更快的方法。

谢谢!

最佳答案

它应该产生多个进程,不知道为什么你只看到一个。

来自 the readme :

Use the --pool option to specify a worker pool. You can use this option multiple times to start different numbers of workers for different queues.
The following command will start 1 worker for the tracking queue, 2 workers for the mailers and tasks queues, and 2 workers for any jobs:

RAILS_ENV=production script/delayed_job --pool=tracking --pool=mailers,tasks:2 --pool=*:2 start

评论中讨论后的更多细节

问题提到“Rails 实例”,但实例 是一个通用术语。您要查找的词是 process .从 DelayedJob 的自述文件中引用的文本使用了单词 workerworker process 的缩写。在 Rails 中,您通常将服务器进程称为服务器,将工作进程称为 worker
rails console 也只是另一个进程。

在 Rails 中,所有这些进程都会加载整个应用程序,但会做不同的事情。
Server 进程将等待传入的 HTTP 请求并发回响应; worker 进程将定期轮询队列(DelayedJob 使用数据库)并执行作业; console 进程将启动一个 REPL并等待输入。
他们都可以访问相同的代码(模型、数据库配置、 Assets 、 View 模板等),但职责却截然不同。

我希望这能让事情变得更清楚。

关于ruby-on-rails - 如果运行多个池,延迟作业会初始化多少个 Rails 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756121/

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