Sidekiq-自定义作业计划程序

时间:2019-03-13 18:40:53

标签: ruby-on-rails sidekiq

我需要为用户实现自定义计划程序。

示例场景: 用户将确切的作业设置为在星期一的12:00 AM运行,然后将其编辑为在星期五执行,等等。所有这些都在GUI界面中进行。

如何使用sidekiq进行操作?我知道有sidekiq调度程序,但是它基于预定义的.yml配置文件。

1 个答案:

答案 0 :(得分:0)

使用cron作业。 https://github.com/ondrejbartas/sidekiq-cron。将用户作业保存在数据库中并调用作业。

class AbstractCar:
    def __init__(self):
        self.engine = self.engine_class()

    def __init_subclass__(cls, * , engine_class, **kwargs):
        super().__init_subclass__(**kwargs)
        cls.engine_class=engine_class
        @classmethod
        def evil_black_magic(cls, **kwargs):
            AbstractCar.__init_subclass__(engine_class=engine_class, **kwargs) 
        if '__init_subclass__' not in cls.__dict__:        
            cls.__init_subclass__ = evil_black_magic

当用户删除或更改作业时,只需搜索该作业并销毁即可。然后创建一个新的。

Sidekiq::Cron::Job.new(name: 'some database id', cron: '*/5 * * * *', class: 'HardWorker')