【问题标题】:does Delayed_job daemon not run in development?Delayed_job 守护进程不在开发中运行吗?
【发布时间】:2011-12-22 17:08:21
【问题描述】:

我正在使用delayed_job,我可以使用rake jobs:work 运行作业,但使用守护程序版本,它什么也没做,尽管我在进程列表中看到它。

我正在使用:

  • 导轨 (3.0.9)
  • delayed_job (2.1.4)
  • 守护进程 (1.0.10)

我正在运行延迟作业:

unix>RAILS_ENV=development script/delayed_job start

【问题讨论】:

  • RAILS_ENV=development script/delayed_job status 的结果是什么?
  • 您是否尝试在没有守护进程 gem 的情况下运行它?
  • Gemfile.lock 声明守护进程是必需的依赖项,但我将删除显式使用并尝试它。我这样做的原因是尝试强制 Daemonize 使用特定版本(很多 StackOverflow 建议都围绕使用 1.0.10 作为守护进程),因为我在系统上有 1.1.4 守护进程。

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


【解决方案1】:

加载自定义作业类文件可能会出现问题。要测试它,试试这个:

  • 进入rails控制台rails console --sandbox
  • 确保您在job = Delayed::Job.first 表中有工作。
  • 试试YAML.load(job.handler)。如果您收到如下所示的错误:ArgumentError: undefined class/module MyCustomClass,则可能是加载自定义作业时出现问题
  • 仍在 Rails 控制台中,运行 require 'My_Custom_Class。然后再次运行YAML.load(job.handler) 命令。如果这返回了适当的对象,那肯定是类加载问题。

要解决此问题,请创建文件 config/initializers/custom.rb 并在其中放入 require 'My_Custom_Class'

然后您应该能够运行 rake jobs::workoff 并获得如下所示的内容:

[Worker(host:my.host pid:5085)] Starting job worker
[Worker(host:my.host pid:5085)] MyCustomJob completed after 0.0774
[Worker(host:my.host pid:5085)] 1 jobs processed at 9.1935 j/s, 0 failed ...
[Worker(host:my.host pid:5085)] No more jobs available. Exiting

【讨论】:

    【解决方案2】:

    要回答您的问题,我们可能需要更多信息。

    作业是否添加到数据库中?作业中是否有任何错误?

    正如我已经提到的,RAILS_ENV=development script/delayed_job status 的结果是什么?

    其次,您是否浏览过 Wiki 页面最常见的问题?

    https://github.com/collectiveidea/delayed_job/wiki/Common-problems

    【讨论】:

    • 作业被添加到数据库中。它们不由守护进程处理,而是由 rake jobs:work 处理。我将检查延迟的作业状态消息,但我看到它正在运行(当我启动两次时,它表示一个进程已经在运行)+delayed_job.log 中的 pid 与 ruby​​ delay_job 进程的 pid 匹配。
    • 状态返回delayed_job: running [pid 1473]
    猜你喜欢
    • 1970-01-01
    • 2023-03-02
    • 2021-10-27
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多