运行 delayed_job 用于同一服务器上的不同环境

Running delayed_job for different environments on the same server

我们有一个设置,其中同一 Rails 应用 运行 的两个不同环境(stagingtraining,比如说)在一台服务器上。我们正在实施一项依赖于 delayed_job gem.

的功能

我们发现不可能 运行 delayed_job start 用于两种环境,因为第二个看到第一个实例并认为它已经 运行ning。但是,-i 命令开关(staging\bin\delayed_job -i staging starttraining\bin\delayed_job -i training start)允许两个实例共存;但看起来此开关旨在为单个应用程序启动多个工作程序(很像 delayed_job -n 2 start),而不是为多个应用程序启动。

我们不清楚以这种方式启动的守护进程是否会正确处理来自他们自己的应用程序的作业,或者是否需要任何进一步的配置才能实现这一点。哪位大侠能指教一下吗?

./script/delayed_job --help 输出中有一些有趣的选项需要注意。

  • --pid-dir=DIR Specifies an alternate directory in which to store the process ids.
  • --log-dir=DIR Specifies an alternate directory in which to store the delayed_job log.

它们都默认为源目录的子目录,所以如果恰好是多个源目录中的 运行,它应该可以正常工作。如果由于某种原因你的版本不是这种情况,或者如果你来自同一个目录,具有不同的环境,那么你应该相应地设置你的文件夹,这样每个文件夹至少都有自己的 PID 文件夹.

  • -p --prefix NAME String to be prefixed to worker process names

这不会更改 pid 文件名,只会更改您将看到的 ps