2011-11-05 84 views
5

我正在使用delayed_job,并且能够使用rake作业运行作业:工作但使用守护程序版本,尽管我在进程列表中看到它,但它没有执行任何操作。Delayed_job守护进程没有在开发中运行吗?

我使用:

  • 轨(3.0.9)
  • 的delayed_job(2.1.4)
  • 守护程序(1.0.10)

我跑的delayed_job使用:

unix>RAILS_ENV=development script/delayed_job start 
+0

什么是'RAILS_ENV =发展脚本/ delayed_job的status'的结果呢? – Ernest

+0

你是否试图在没有守护进程的情况下运行它? – Ernest

+0

Gemfile.lock表明守护进程是必需的依赖项,但我将删除显式使用并尝试它。我这样做的原因是尝试并强制Daemonize使用特定版本(因为我在守护进程中使用了1.0.10,所以围绕使用1.0.10的守护进程提供了很多StackOverflow建议),因为我在系统上有守护进程1.1.4。 – Aditya

回答

3

要回答你的问题,我们可能需要更多形成。

作业已添加到数据库?工作中是否有错误?

RAILS_ENV=development script/delayed_job status结果如我刚才提到的那样?

二,您是否遇到过维基页面最常见的问题?

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

+0

作业被添加到数据库。它们不是由守护进程处理,而是由耙工作处理:工作。我将检查延迟的作业状态消息,但是我看到它正在运行(当我启动两次时,它表示进程已经运行)+ delayed_job.log中的pid与ruby delayed_job进程的pid匹配。 – Aditya

+0

Status returns'delayed_job:running [pid 1473]' – Aditya

3

这可能是加载自定义作业类文件的一个问题。要测试一下,试试这个:

  • 进入导轨控制台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 
相关问题