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

时间:2017-08-09 09:15:52

标签: ruby-on-rails ruby-on-rails-4 delayed-job

我们有一个设置,在同一个服务器上运行相同Rails应用程序的两个不同环境(stagingtraining)。我们正在实现一个依赖于delayed_job gem。

的功能

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

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

1 个答案:

答案 0 :(得分:1)

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

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

这两个都默认为源目录的子目录,所以如果碰巧用完多个源目录,它应该可以正常工作。如果出于某种原因,您的版本不是这种情况,或者您是在同一个目录中运行,使用不同的环境,那么您应该相应地设置文件夹,以便每个文件夹至少有自己的PID文件夹。

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

这不会更改pid文件名,只会更改您在ps

中看到的内容