2017-02-28 97 views
0

我有一個活動作業,每天凌晨3點安排。應用程序是一個SAAS,每個子域有不同的時區。我問的是如何根據每個公司的時區在服務器時間的每個凌晨3點運行後臺作業。 我在我的數據庫中有時區屬性,每個公司都可以插入它自己的。Rails根據時區在特定時間每天運行活動作業

我在我的sidekiq_schedule.yml

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 

有沒有辦法用sidekiq_cron做到這一點?

我想再拍工作運行首先從DB獲得的所有時區,並讓他們與服務器時區之間的差異,然後每一個傳遞到下面的代碼

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

但我不知道這是否是最好的方式來實現這一點或不是,因爲我將有第一份工作的運行另一個時間問題

回答

0

嗨,你可以使用rails活動記錄回調更新作業,每當公司被添加或它改變了它的時區。它會更有效率。

在時區更新中找到具有唯一名稱的作業,將其銷燬並根據時區創建新作業。

您將需要設置所有當前作業時區一次

相關問題