2017-02-28 22 views
0

毎日午前3時にスケジュールされたアクティブなジョブがあります。アプリケーションはSAASであり、各サブドメインには異なるタイムゾーンがあります。私が求めているのは、バックグラウンドジョブをサーバー時間に1回ではなく、各会社のタイムゾーンに従って3時に実行する方法です。 私は私のDBにtimezone属性を持っています、各社は独自のものを挿入することができます。 sidekiq_cronでこれを達成する方法は、私は私のsidekiq_schedule.ymlタイムゾーンに従って特定の時刻に毎日実行されるRailsアクティブジョブ

schedule_foo_job: 
    cron: "0 3 * * *" 
    class: "FooJob" 
    queue: default 
    active_job: true 

に、ジョブファイル

class FooJob < ApplicationJob 
    queue_as :default 

    def perform(*args) 
    DoSomeThing.new.run 
    end 
end 

に持って

ありますか?

私は、次のコード

FooJob.set(wait_until: "Pass the time here").perform_later 

しかし、私にそれぞれ1を渡す最初の別のジョブの実行がDBからのすべてのタイムゾーンを取得するために作成し、それらとサーバーのタイムゾーン間の差を得るために考えていましたこれが最善の方法であるかどうかはわかりません。最初のジョブの実行に別のタイミングの問題があります。

答えて

0

こんにちは、企業が追加されるたびに、タイムゾーンを変更します。それははるかに効率的になります。

timezone updateでジョブを一意の名前で検索し、それを破棄してタイムゾーンに従って新しいジョブを作成します。

現在のすべてのジョブを1回だけ設定する必要があります。

関連する問題