現時点では、次のようなsidekiqの仕事があります。
class SyncUser
include Sidekiq::Worker
def perform(user_id)
#do stuff
end
end
私はこのようにキューにジョブを配置しています:
SyncUser.perform_async user.id
もちろん、これはすべて動作しますが、perform_asyncを呼び出してから実際にジョブが実行されるまでには少し遅れがあります。
Sidekiqにジョブをすぐに実行するよう指示するためにできることは他にありますか?
ここには2つの質問があります。
現在のコンテキストでジョブをすぐに実行する場合は、次を使用できます。
SyncUser.new.perform(user.id)
非同期作業がスケジュールされてからsidekiqワーカーで実行されるまでの遅延を短縮する場合は、poll_interval
設定:
Sidekiq.configure_server do |config|
config.poll_interval = 2
end
poll_interval
は、ワーカーがキュー上のジョブをチェックする頻度のワーカーバックエンド内の遅延です。ジョブがスケジュールされてから無料のワーカーで実行されるまでの平均時間はpoll_interval / 2
。