如何在控制台中 运行 重新请求作业?
How to run a resque job in the console?
我正在尝试在控制台中调用作业,但总是出错。
遵循以下文档:
- http://tutorials.jumpstartlab.com/topics/performance/background_jobs.html
- https://www.youtube.com/watch?v=UrE47tCrZXc
- https://guides.rubyonrails.org/active_job_basics.html
- https://github.com/resque/resque
创建了以下文件:
(lib/jobs/archive_survey_jobs.rb)
module Jobs
class ArchiveSurveysJob < ActiveJob::Base
@queue = :setup
def perform(survey_type)
if SurveyTypes.all_classes.map(&:to_s).include?(survey_type)
surveys = Survey.where(something: 'stuff')\
.where.not(something: 'stuff',
something: 'stuff')
surveys.each do |survey|
do_something
end
end
end
end
end
我知道我可以做类似 Resque.enqueue(ArchiveSurveysJob, 'string_here')
如何在控制台中调用它?如果我尝试:
Jobs::ArchiveSurveysJob.create(survey_type: 'string_here')
,
当我检查 Resque Statuses 时,它导致了一个错误:`任务因错误而失败:
undefined local variable or method `args' for #
如果我试试这个:
Jobs::ArchiveSurveysJob.perform(`string_here`)
或:
Jobs::ArchiveSurveysJob.perform_now('string_here')
我得到:
ArgumentError: wrong number of arguments (given 0, expected 1..2)
如果我遗漏了一些文档或做错了什么,请告诉我。
我是如何做到这一点的,方法是创建一个 Rake 任务并在那里调用 Job。
在您的示例中,perform
是一个实例方法。您正在调用可能没有任何参数的 class 级别 perform
。我不知道你的 resque 版本具体是什么,但是你可以在至少一个版本中像这样从控制台排队作业:Resque.enqueue(Jobs::ArchiveSurveysJob)
ps,确保你的 resque worker 是 运行。
在开发环境中,我通常在行中有 resque 运行:
# config/initializers/resque.rb
Resque.inline = true if Rails.env.dev? || Rails.env.test?
我正在尝试在控制台中调用作业,但总是出错。
遵循以下文档:
- http://tutorials.jumpstartlab.com/topics/performance/background_jobs.html
- https://www.youtube.com/watch?v=UrE47tCrZXc
- https://guides.rubyonrails.org/active_job_basics.html
- https://github.com/resque/resque
创建了以下文件: (lib/jobs/archive_survey_jobs.rb)
module Jobs
class ArchiveSurveysJob < ActiveJob::Base
@queue = :setup
def perform(survey_type)
if SurveyTypes.all_classes.map(&:to_s).include?(survey_type)
surveys = Survey.where(something: 'stuff')\
.where.not(something: 'stuff',
something: 'stuff')
surveys.each do |survey|
do_something
end
end
end
end
end
我知道我可以做类似 Resque.enqueue(ArchiveSurveysJob, 'string_here')
如何在控制台中调用它?如果我尝试:
Jobs::ArchiveSurveysJob.create(survey_type: 'string_here')
,
当我检查 Resque Statuses 时,它导致了一个错误:`任务因错误而失败:
undefined local variable or method `args' for #
如果我试试这个:
Jobs::ArchiveSurveysJob.perform(`string_here`)
或:
Jobs::ArchiveSurveysJob.perform_now('string_here')
我得到:
ArgumentError: wrong number of arguments (given 0, expected 1..2)
如果我遗漏了一些文档或做错了什么,请告诉我。
我是如何做到这一点的,方法是创建一个 Rake 任务并在那里调用 Job。
在您的示例中,perform
是一个实例方法。您正在调用可能没有任何参数的 class 级别 perform
。我不知道你的 resque 版本具体是什么,但是你可以在至少一个版本中像这样从控制台排队作业:Resque.enqueue(Jobs::ArchiveSurveysJob)
ps,确保你的 resque worker 是 运行。 在开发环境中,我通常在行中有 resque 运行:
# config/initializers/resque.rb
Resque.inline = true if Rails.env.dev? || Rails.env.test?