Resque电话卡住了

时间:2013-11-29 10:07:26

标签: ruby-on-rails resque

我是Resque的新手。我想在Resque工作者的帮助下制作和发送excel文件。我在工人类中编写了该代码。现在我已将控制器函数内的worker调用为:

Resque.redis = Redis.new(:host => "#{Rails.configuration.redis_machine}", :port => Rails.configuration.redis_port)

Resque.enqueue(MakeAndSend,records,email)

此处记录是要打印到excel文件的数据行,而email是要将此excel文件发送到的用户的邮件ID。

但问题是我的代码卡在这一行,以下行只在作业结束时执行。但据我所知,通过研究resque,以下行应立即执行。

所以,如果有人帮我解决这个问题,我将非常感激。

编辑上面的记录实际上是对象的集合。所以我没有任何选择在这里发送ID。此外,redis服务器没有受到攻击。

1 个答案:

答案 0 :(得分:0)

看着它,我不认为这就是问题所在的那一行 - 它可能是那条线背后的东西,比如工人档案或其他东西

我可以看到你可能会遇到的一个主要问题,还有其他问题:

- >您将变量(ActiveRecord对象)传递给Resque队列 - 发送变量的id是惯例,因此worker文件可以在运行时调用数据库


以下是我们的Resque队列的一些实时代码:

  #app/models/message.rb (this gets called when we run "send_broadcast" function)
  def broadcast!
                self.subscribers.each do |subscriber|
                        Resque.enqueue(MailoutQueue, id, subscriber.id)
                end
        end

#app/workers/mailout_queue.rb
class MailoutQueue
        @queue = :mailer
        def self.perform(message_id, recipient_id)
                MessageMailer.send_message(message_id, recipient_id).deliver
        end
end

MessageMailer.rb只是一个标准的邮件发件人文件


如果您可以发布您的工作人员文件代码,它将帮助我们了解真正问题的位置,以便我们能够妥善修复!