web-dev-qa-db-ja.com

sidekiqを取得してジョブをすぐに実行する

現時点では、次のようなsidekiqの仕事があります。

class SyncUser
  include Sidekiq::Worker

  def perform(user_id)
    #do stuff
  end
end

私はこのようにキューにジョブを配置しています:

SyncUser.perform_async user.id

もちろん、これはすべて動作しますが、perform_asyncを呼び出してから実際にジョブが実行されるまでには少し遅れがあります。

Sidekiqにジョブをすぐに実行するよう指示するためにできることは他にありますか?

47
dagda1

ここには2つの質問があります。

現在のコンテキストでジョブをすぐに実行する場合は、次を使用できます。

SyncUser.new.perform(user.id)

非同期作業がスケジュールされてからsidekiqワーカーで実行されるまでの遅延を短縮する場合は、poll_interval設定:

Sidekiq.configure_server do |config|
  config.poll_interval = 2
end

poll_intervalは、ワーカーがキュー上のジョブをチェックする頻度のワーカーバックエンド内の遅延です。ジョブがスケジュールされてから無料のワーカーで実行されるまでの平均時間はpoll_interval / 2

88
Winfield