Sidekiq在railscast上。还有一些问题

时间:2015-03-31 04:24:19

标签: ruby-on-rails sidekiq

我正在Sidekiq上观看RailsCast并提出了一些问题:

1)Sidekiq通过线程而不是进程处理任务。这是什么意思?为什么它会节省内存?

2)worker类中的方法是否需要“perform”方法?

3)在Sidekiq文档中,它说:

  

从Rails应用程序的根目录启动sidekiq以便进行作业   将被处理:

     

捆绑exec sidekiq

所以如果我在localhost上运行它,我可以运行bundle exec sidekiq。如果我推到Heroku,我现在该怎么办?如何在Heroku上运行Sidekiq?

4)我不确定我的Sidekiq是否正常工作。我有这段代码:

def set_defaults
    self.clicks = 0 if clicks.blank?
    self.title = TitleWorker.perform_async(orig_url)
end

但测试中的TitleWorker.perform_asynch(orig_url)似乎只返回一串数字。到底是怎么回事?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

虽然我对第一个问题不是很清楚,但我可以回答你的其他问题:

  1. 是。它需要一个Perform方法来启动工作进程。

  2. Heroku真是太神奇了。您无需在Heroku上进行任何特殊配置即可运行Sidekiq。您只需确保安装RedisToGo,然后将其添加到Procfile:

  3. worker: bundle exec rake jobs:start sidekiq: bundle exec sidekiq -c 15 -v