我有一个每天凌晨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完成这个?
我正在考虑先让另一个Job运行来从DB获取所有时区,然后获取它们与服务器时区之间的差异,然后将每个时区传递给以下代码
FooJob.set(wait_until: "Pass the time here").perform_later
但是我不知道这是否是实现这一目标的最佳方法,因为我将在第一份工作的运行中遇到另一个时间问题
答案 0 :(得分:0)
您好,您可以使用rails active active record backs在添加公司时更新作业或更改时区。它会更有效率。
在时区更新中找到具有唯一名称的作业,销毁它并根据时区创建新作业。
您需要设置所有当前作业时区