我正在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)似乎只返回一串数字。到底是怎么回事?我该如何解决这个问题?
答案 0 :(得分:0)
虽然我对第一个问题不是很清楚,但我可以回答你的其他问题:
是。它需要一个Perform方法来启动工作进程。
Heroku真是太神奇了。您无需在Heroku上进行任何特殊配置即可运行Sidekiq。您只需确保安装RedisToGo
,然后将其添加到Procfile:
worker: bundle exec rake jobs:start
sidekiq: bundle exec sidekiq -c 15 -v