在轨道上的rake任务ruby之后无法启动工作程序

时间:2016-05-10 08:16:24

标签: ruby-on-rails ruby resque refinerycms

我在这里已经阅读过多少个问题,但到目前为止还没有人帮助我。

Scenerio:我使用按钮点击启动rake任务,它也启动了rake任务,但问题是它没有激活worker。

以下是我点击按钮的代码:

def run_rake_jobs
   Resque.enqueue(ImportJobs)
   puts Resque.info, "**************************************************"
   flash[:notice] = "Importing Jobs Now"
   redirect_to :back
end

任务代码:

module Refinery
  module Titans
    class ImportJobs
      @queue = :import_jobs
      def self.perform
        system "rake st:import_jobs"
      end
    end
  end
end

我如何开始工作?我已经尝试了所有可能的技巧,但对我没有用。

1 个答案:

答案 0 :(得分:0)

run_rake_jobs中的代码仅将ImportJobs后台作业列入redis队列,但不会触发执行。控制器中的代码不会中断。

要实际运行排队的作业,您需要调用单独的命令(通常在rails代码之外),例如rake resque:work,有关详细信息,请参阅resque readme

这种用于运行后台作业的模式是典型的:在您的Rails代码中,您只应该在后台运行的作业排入队列。然后,有一个单独的进程从队列中提取后台作业并使用一个或多个工作程序运行它们。这样,您就可以将长期运行的任务与主Rails代码分离。