【问题标题】:delayed_job -i via cron script through ruby will not start after stopping previous processesdelay_job -i via cron script through ruby​​ 在停止以前的进程后不会启动
【发布时间】:2013-04-03 13:28:04
【问题描述】:

所以我遇到了一个奇怪的情况,我在 Scientific Linux 版本 6.3(碳)上运行了延迟作业 2.0.7 和守护进程 1.0.10 以及 ruby​​ 1.87 和 rails 2.3.5。

我有一个 rake 任务,它每晚重新启动延迟的作业,然后进行一堆批处理。我以前只是做 ruby​​ script/delayed_job 停止然后开始。我添加了一个命名队列的反向移植,它允许我做命名队列。所以正因为如此,我想启动每种类型的命名队列的几个进程。为此,我发现最好的方法似乎是使用 -i 以不同的方式命名每个进程,这样它们就不会发生冲突。

我编写了一些 ruby​​ 代码来执行此循环,它在 dev 中运行良好,在命令行上运行良好,从 rails 控制台调用时运行良好。但是当从 cron 调用时,它会静默失败,调用返回 false 但没有错误消息。

# this works
system_call_result1 = %x{ruby script/delayed_job stop}
SnapUtils.log_to_both "result of stop all - #{system_call_result1} ***"

# this works
system_call_result2 = %x{mv log/delayed_job.log log/delayed_job.log.#{Date.today.to_s}}
SnapUtils.log_to_both "dj log file has been rotated"

# this fails, result is empty string, if I use system I get false returned
for x in 1..DELAYED_JOB_MAX_THREAD_COUNT
  system_call_result = %x{ruby script/delayed_job -i default-#{x} start}
  SnapUtils.log_to_both "result of start default queue iteration #{x} - #{system_call_result} ***"
end

# this fails the same way
for y in 1..FOLLOWERS_DELAYED_JOB_MAX_THREAD_COUNT
  system_call_result = %x{ruby script/delayed_job --queue=follower_ids -i follower_ids-#{y} start}
  SnapUtils.log_to_both "result of start followers queue iteration #{y} - #{system_call_result} ***"
end

所以我做了很多试验,发现这个问题只有在我使用 -i -named 进程时才会发生,并且只有在我停止它们然后尝试启动它们时才会发生。如果我删除停止,那么一切正常。

这只是在我使用 cron 时。

如果我使用命令行或控制台运行,它工作正常。

所以我的问题是,如果您之前在同一个 ruby​​ 进程中停止了这些命名的 dj 进程,那么 cron 的哪些不同之处会导致它们无法启动?

谢谢 乔尔

【问题讨论】:

  • 你检查过 cron 日志吗?通常是/var/log/syslog。另请注意,当用户的 cron 作业运行时,它不是正常的登录会话,因此可能未设置某些必需的环境变量。
  • 是的,检查过,没有明显问题。谢谢
  • Cron 可能设置了不同的环境变量。您可能需要显式设置 RAILS_ENV。过去我在 cron 上遇到过类似的问题,我可以通过调用 rake 任务而不是 script/... 来解决这些问题(不知道为什么)

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


【解决方案1】:

好吧,我终于想通了,当检查cron是否会发送电子邮件时,我们发现sendmail坏了,没有安装sendmail想要的mysql版本,所以我们修复了这个问题然后我们的问题神奇地消失了.我仍然会向任何可以解释原因的人提供赏金..

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 2012-11-09
    • 2012-11-08
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多