簡體   English   中英

Heroku resque / clockwork'沒有為班級定義工作'

[英]Heroku resque/clockwork 'No job defined for class'

我正在嘗試使用Resque / Clockwork在Heroku上運行后台作業。

在本地,作業由Clockwork排隊,並由Resque按預期執行。 it works... but most of the time Clockwork queues the job as expected, and when executed by Resque I get a failed job with the error 'No job defined for class'. 在Heroku上, 它可以工作...但是,大多數情況下Clockwork按預期方式將作業排隊,當由Resque執行時,我收到了失敗的作業,錯誤為“未為類定義作業”。

通過Resque管理面板顯示的確切錯誤是:

Worker 960f8a1b-cce9-497a-a7ab-9b40c166a600:2+1 on FEATURED_CATALOG_ITEMS_CACHE at 27 minutes ago     Retry or Remove
Class nil
Arguments nil
Exception Error
Error No job defined for class 'Workers::FeaturedCatalogItemsCacheWorker'

我的代碼如下:

/app/models/workers/featured_catalog_items_cache_worker.rb

class Workers::FeaturedCatalogItemsCacheWorker

  @queue = :featured_catalog_items_cache

  def self.perform
    p 'do work' # there is more code here but edited for brevity
  end
end

/lib/clock.rb

require File.expand_path('../../config/boot',        __FILE__)
require File.expand_path('../../config/environment', __FILE__)
require 'clockwork'

module Clockwork
  every(2.minutes, 'Queueing FeaturedCatalogItemsCacheWorker job') { Resque.enqueue(Workers::FeaturedCatalogItemsCacheWorker) }
end

/lib/tasks/resque.rake

require 'resque/tasks'

task "resque:setup" => :environment do
ENV['QUEUE'] = '*'
end

程序文件

web: rackup -p $PORT
resque: env TERM_CHILD=1 bundle exec rake resque:work
clock: bundle exec clockwork lib/clock.rb

我想念什么嗎?

也許在/lib/clock.rb

require 'Workers::FeaturedCatalogItemsCacheWorker'

解決方案:

require './config/boot' require './config/environment' require 'clockwork' require 'resque'

module Clockwork

handler do |job| puts "Running job : #{job}" Resque.enqueue(job) end

every(15.minutes, NewsRssReader ) end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM