Rails 延迟作业在暂存时停止

Rails delayed jobs stops on staging

如何确定延迟作业是否 运行 是否在后台 staging.If 它已停止,因此它应该通过检查某些进程 pid 或其他东西来启动 运行。我的问题有时会延迟工作停止,我无法弄清楚为什么会这样,所以任何人都可以告诉我我应该怎么做才能解决这个问题。 这是我检查状态的命令

RAILS_ENV=staging ./script/delayed_job status

但我需要做一些事情来自动检查延迟的工作是否是 运行。如果不是,它应该开始 运行

要监视进程是否 运行(并可选择重新启动它),请使用类似 god.

的东西

如果您的后台作业即将结束,您应该增加日志的详细程度,并可能使用远程异常通知程序,例如 Airbrake

两者都有几十种选择,请自行研究。

要手动检查是否有进程 运行,请使用

> ps aux

或 top 或 htop 列出现有进程。

在根目录中创建一个 shell 脚本文件并放置此代码。
然后给文件权限

ps_out=`ps -ef | grep delayed | grep -v 'grep' | grep -v [=10=]`
result=$(echo $ps_out | grep "")
if [[ "$result" != "" ]];then
    echo "Running"
else
    /path-to-your-project/delayed_job start
fi

现在在 crontab 中添加这个

crontab -e