簡體   English   中英

Rake任務沒有從worker中運行

[英]Rake task not running from within worker

我不明白為什么我的rake任務不是從resque工作者中運行的。 運行

rake :send_this_email

從控制台工作正常,我只想將它作為一個cron作業運行(如下所示)但是在從工作者中調用rake任務時,某些東西不能正常工作。

我的rescue_schedule.yml

send_this_email:
  cron: "*/2 * * * *"
  class: SendThisEmailWorker 
  args:
  description: "Send email when condition defined in rake task is met"

我的send_this_email_worker.rbworkers目錄中,如果我可以自己從控制台手動調用rake任務,那么問題必定在哪里?

require 'rake'

module SendThisEmailWorker
  @queue = :send_this_email

  def self.perform
    Rake::Task["send_this_email"].invoke
  end
end

當我啟動我的開發服務器時,這個send_this_email rake任務應該每2分鍾運行一次嗎? 它不是,resque管理面板將其顯示為隊列中的作業。 我在這里錯過了什么?

感謝您的關注。

從gerep評論更新

require 'rake'

module SendThisEmailWorker
  @queue = :send_this_email

  def self.perform
    puts "Hi from the console, I'm started"
    Rake::Task["send_this_email"].invoke
  end
end

require 'rake'是不夠的。 例如,如果您執行Rake :: Task.tasks #list所有任務

你會得到[]

您需要告訴您的worker類加載任務。 嘗試這個

require 'rake'
Rake::Task.clear # necessary to avoid tasks being loaded several times in dev mode
YOUR_APP_NAME::Application.load_tasks
module SendThisEmailWorker
  @queue = :send_this_email

  def self.perform
    puts "Hi from the console, I'm started"
    Rake::Task["send_this_email"].invoke
  end
end

YOUR_APP_NAME是您應用的名稱,可在config/application.rb找到

暫無
暫無

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

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