【问题标题】:Running delayed_job for different environments on the same server在同一台服务器上为不同环境运行延迟作业
【发布时间】:2017-08-24 01:42:09
【问题描述】:

我们有一个设置,其中同一 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),而不是多个应用。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    • -p --prefix NAME 字符串作为工作进程名称的前缀

    这不会更改 pid 文件名,只会更改您使用 ps 看到的内容

    【讨论】:

    • 谢谢,这很有帮助。我们从不同的源目录运行,因此 PID 和日志可以正常工作。在您回答之前,我们发现 -i 选项(将标识符附加到进程名称)确实有效。不过,-p 可能更“正确”。
    • @Chowlett 虽然-i 似乎有效,但请记住它应该用于指定 numeric 标识符,它不能与-n 结合使用指定工人的数量。此外,-p 对同一目录中的 pid 文件冲突没有实际帮助,它只是使进程本身具有更有意义的名称。
    猜你喜欢
    • 2011-12-25
    • 2012-01-13
    • 1970-01-01
    • 2012-10-29
    • 2011-06-05
    • 1970-01-01
    • 2011-07-24
    • 2013-07-02
    • 2012-07-26
    相关资源
    最近更新 更多