2017-08-09 124 views
1

我们有一个设置,在同一个服务器上运行相同Rails应用程序的两个不同环境(例如stagingtraining)。我们正在实施一项依赖于delayed_job宝石的功能。在同一台服务器上为不同环境运行delayed_job

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

我们并不清楚以这种方式启动的守护进程是否会正确处理来自他们自己的应用程序的作业,或者是否需要进一步的配置来实现此目的。任何人都可以启发我们吗?

回答

1

./script/delayed_job --help输出中可以看到一些有趣的选项。

  • --pid-DIR = DIR指定在其中存储的进程ID的备用目录。
  • --log-dir = DIR指定用于存储delayed_job日志的备用目录。

这些都默认为源目录的子目录,所以如果碰巧被用完了多个源目录的,它应该工作的罚款。如果出于某种原因,您的版本不是这种情况,或者如果您是从相同的目录运行,并且环境不同,那么您应该相应地设置文件夹,以便每个文件夹至少拥有自己的PID文件夹。

  • -p - 前缀名字符串添加前缀到工作进程名称

这不会改变pid文件名,只有你将与ps

+0

看谢谢,这很有帮助。我们从不同的源代码库运行,所以PID和日志正常工作。在回答之前,我们发现'-i'选项确实可以为进程名添加一个标识符。不过,'-p'可能更“正确”。 – Chowlett

+0

@Chowlett虽然'-i'似乎可以工作,但请记住它应该用于指定_numeric_标识符,并且它不能与'-n'结合使用来指定工作人员的数量。 另外,'-p'对于同一个目录中的pid文件冲突没有实际的帮助,它只是让进程本身具有更有意义的名称。 – Vince

相关问题