【发布时间】:2023-04-09 19:08:01
【问题描述】:
我有一个每天凌晨 3 点安排的活动作业。该应用程序是一个 SAAS,每个子域都有不同的时区。我要问的是如何根据每个公司的时区让后台作业在凌晨 3 点运行一次,而不是在服务器时间运行一次。 我的数据库中有时区属性,每个公司都可以插入自己的。
我的 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 完成这个?
我正在考虑先运行另一个作业以从数据库中获取所有时区并获取它们与服务器时区之间的差异,然后将每个时区传递给以下代码
FooJob.set(wait_until: "Pass the time here").perform_later
但我不知道这是否是完成此任务的最佳方法,因为我将在第一份工作的运行中遇到另一个时间问题
【问题讨论】:
-
这可能对
https://github.com/ondrejbartas/sidekiq-cron#time-cron-and-sidekiq-cron有帮助
标签: ruby-on-rails cron sidekiq rails-activejob