1

所以,我正在尝试在 TorqueBox 中使用部署描述符,方法是在名为 TorqueBox.yml 的配置下有一个文件(在我的 Rails 应用程序中)

该文件本身包含:

---
application:
  root: /usr/local/labs/live_management
  env: development

tasks:
  Backgroundable:
      concurrency: 9

据我所知,这是正确的。

但是,我不知道这个文件应该做什么......当我 rake torquebox:deploy it 看起来它仍然将默认的 app_name-knob.yml 文件写入到 Torquebox 目录,该目录没有我的并发描述符在其中,文档说外部文件具有优先权。

在这种情况下,我一次只能有一个后台任务。

所以我尝试将我的 torquebox.yml 文件复制到 Torquebox 应用程序目录,将其重命名为 app_name-knob.yml 文件。

这似乎有帮助,因为现在我一次有两个后台任务(即使我指定了 9 个)。

我究竟做错了什么?我的文件不正确吗?Torquebox 可以只有 2 个后台任务吗?

使用 torquebox.yml 作为内部描述符的正确方法是什么?

4

1 回答 1

2

您快到了。问题是由于 TorqueBox 设置其运行时 Ruby 解释器池的方式。在您在内部描述符中指定的开发环境中,默认消息传递运行时池最多有 2 个,因此无论您的并发设置如何,您将看到的最大并发任务数是 2。

生产环境中,默认池是shared,这意味着无论多少线程尝试使用它,都可以共享相同的运行时,在你的情况下,最多 9 个。所以要么将你的 env 变量设置为production,要么将 pools 元素添加到你的描述符强制它共享。例如,

---
application:
  root: /usr/local/labs/live_management
  env: development

tasks:
  Backgroundable:
      concurrency: 9

pooling:
  messaging: shared

顺便说一句,来自外部和内部描述符的值被合并,外部描述符优先于两者之间的任何共同键。所以你做对了。

欲了解更多信息,http ://torquebox.org/documentation/1.0.1/pooling.html

于 2011-07-13T18:33:09.283 回答