参考:https://github.com/mperham/sidekiq
sidekiq 比delayed_job 好的点,就在于速度快!
我觉得特别特别特别适合我正在做的项目哈哈哈哈
前些日子被这个问题困扰了很久,现在终于知道了,内存化+数据库持久化,解决办法就是把数据库的操作sidekiq化.哈哈
执行速度: 4500 / s , delayed_job: 200/s 原因是前者放在redis中,后者放在 db中.
使用方式:
sinatra:
1. app.rb:
先定义这个 worker class TestWorker include Sidekiq::Worker # 注意: 这里传入的参数不能是复杂类型, 否则会出现serialize的错误。 # 所以如果需要对多个model进行操作时,一个model一个worker好了。 def perform sleep_time sleep sleep_time end end 然后在app.rb 中require 然后在app.rb 中: TestWorker.perform_async(20) 就可以了.
配置文件:config/sidekiq.yml
# 注意: 不要超过50 ,官方要求这样.默认是10并发 concurrency: 50
2. 运行sidekiq的命令:
bundle exec sidekiq -r ./app.rb
3. sidekiq的任务都保存在那里?
4. 传入的参数,需要是简单的json , hash , 不能是复杂的activerecord model