gpt4 book ai didi

ruby-on-rails - Delayed::Job 任务未执行且在运行时未从队列中清除

转载 作者:行者123 更新时间:2023-12-01 06:27:39 26 4
gpt4 key购买 nike

我的 Delayed::Jobs 正在排队,但没有运行。当我在控制台中检查它们时,last_error 中没有错误。字段,表明它们尚未运行。我可以使用 some_job.invoke_job 在控制台中成功运行它们。 ,但在它们运行后,它们不会像它们应该的那样从队列中清除(它们过去常常在控制台中手动调用它们后清除)。

我正在运行 delay_job (4.0.4) 和 Rails 4.1.4。这个问题似乎是在 gem 升级后发生的。

我已经多次重新启动 delay_job 服务器。

这是队列中的作业:
#<Delayed::Backend::ActiveRecord::Job id: 725, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMethod\nobject...", last_error: nil, run_at: "2014-10-16 01:52:11", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2014-10-16 01:52:11", updated_at: "2014-10-16 01:52:11">
如何让我的 delay::jobs 自动运行,并在它们完成运行后从队列中清除?

最佳答案

首先,确保您运行 负责处理延迟作业的进程 .您在这里有两个选择:

  • bin/delayed_job - 运行一个监听传入请求的守护进程。
  • rake jobs:work - 在前台处理作业。

  • 您提到使用 Delayed::Job#invoke_job 在控制台中 - 此方法处理作业,但不会执行任何其他操作,这就是您的作业未从队列中删除的原因。

    要运行作业然后从队列中删除成功的作业,您可以使用 Delayed::Worker#run .

    例如:
    some_job = Delayed::Job.find(job_id)
    Delayed::Worker.new.run(some_job)

    关于ruby-on-rails - Delayed::Job 任务未执行且在运行时未从队列中清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26395246/

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