gpt4 book ai didi

ruby-on-rails - 检查我是否在 delayed_job 进程中

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:26 25 4
gpt4 key购买 nike

我有一个 Rails 应用程序,我在其中使用 delayed_job。我想检测我是否在 delayed_job 进程中;像

if in_delayed_job?
# do something only if it is a delayed_job process...
else
# do something only if it is not a delayed_job process...
end

但是我不知道怎么办。这是我现在使用的:

IN_DELAYED_JOB = begin
basename = File.basename $0
arguments = $*
rake_args_regex = /\Ajobs:/

( basename == 'delayed_job' ) ||
( basename == 'rake' && arguments.find{ |v| v =~ rake_args_regex } )
end

另一种解决方案是,正如@MrDanA 所说:

$ DELAYED_JOB=true script/delayed_job start
# And in the app:
IN_DELAYED_JOB = ENV['DELAYED_JOB'].present?

但它们是恕我直言的弱解决方案。谁能提出更好的解决方案?

最佳答案

我处理这些问题的方式是通过偏执狂工作人员。我使用 delayed_job 对上传到我网站的视频进行转码。在视频模型中,我有一个名为 video_processing 的字段,默认设置为 0/null。每当视频被 delayed_job 转码时(无论是创建还是更新视频文件),它都会使用 delayed_job 中的钩子(Hook),并在作业开始时更新 video_processing。作业完成后,完成的 Hook 会将字段更新为 0。

在我的 View / Controller 中,我可以执行 video.video_processing? ? “视频转码进行中”:“视频钓鱼转码”

关于ruby-on-rails - 检查我是否在 delayed_job 进程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com