【问题标题】:Pass Multiple Arguments to Resque & Resque-Scheduler将多个参数传递给 Resque 和 Resque-Scheduler
【发布时间】:2018-03-02 03:28:50
【问题描述】:

我有一个接受两个参数的 Resque Worker

class SendPostWorker
  @queue = :send_post_worker

  def self.perform(post_id, group_id)
    group = Group.find(group_id.to_i)
    ::BotMessageDispatcher.new(group, post_id).work
  end
end

在控制器操作中,我使用 Resque 和 Resque-scheduler 将作业排入队列。

class PostsController < ApplicationController
  def create
    # Code
    Resque.enqueue_in(@post.scheduled_time - Time.now, SendPostWorker, @post.id, params['groups']['group'].to_i)
    # Code
  end
end

当我在 worker 中硬编码 params['groups']['group'] 参数时,worker 最初工作正常(只向它传递了一个参数),但现在我尝试让工作更智能(接收组 id来自控制器),它抱怨传递的参数数量

ArgumentError Error wrong number of arguments (given 2, expected 1) /Users/Lois/Desktop/projects/bot/app/workers/send_post_worker.rb:4:in `perform'

提前感谢您的帮助~!

【问题讨论】:

  • 你没有提到你是在规范中测试这个还是通过运行服务器手动测试。无论哪种方式,听起来SendPostWorker 类在您更新后还没有重新加载(只需要一个参数),所以如果它在测试环境中,请重新启动您的服务器或停止 spring。
  • 你是对的。重新启动工人是问题所在。我认为只更改配置文件需要重新启动服务器/工作人员 =(!

标签: ruby-on-rails ruby resque resque-scheduler


【解决方案1】:

所以我在与同事交谈后解决了这个问题。为未来的读者发帖。

对 resque 工作人员进行更改后重新启动它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2016-05-29
    • 2013-12-05
    相关资源
    最近更新 更多