And*_*Gil 2 ruby ruby-on-rails sidekiq
当我的Rails应用程序启动时,我需要向Sidekiq队列添加一个作业,以更新一些数据,但我不知道哪里是最好的地方.
现在,我已经写了这个application.rb:
class Application < Rails::Application
config.after_initialize do
MyWorker.perform_async
end
end
Run Code Online (Sandbox Code Playgroud)
但问题是当我运行sidekiq命令时它还会加载Rails堆栈,所以我最终会在队列中找到2个作业.
还有其他办法吗?这是我的第一个大Rails应用程序,也是我第一次使用Sidekiq,所以我不知道我是不是正确理解了.这可能不是这样做的正确方法.
谢谢!
更好的解决方案是创建初始化程序 config/initializers/sidekiq.rb
Sidekiq.configure_client do |config|
Rails.application.config.after_initialize do
# You code goes here
end
end
Run Code Online (Sandbox Code Playgroud)
我们遇到了与Redis连接和多个工作正在启动的问题.
我最终使用它,它似乎运作良好:
if defined?(Sidekiq)
Sidekiq.configure_server do |config|
config.on(:startup) do
already_scheduled = Sidekiq::ScheduledSet.new.any? {|job| job.klass == "MyWorker" }
MyWorker.perform_async unless already_scheduled
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1665 次 |
| 最近记录: |