首页 > 解决方案 > 如何在日期选择器上创建自定义 cron 作业?

问题描述

我在网络应用程序上有以下功能:

在此处输入图像描述

对于上面的图片,我保存了Schedule模型上指定的时间来执行一些工作。目前,这非常适用于“简单”选择,这意味着如果用户Hourly, Weekly, Daily, or Monthly只选择,那么我有一组将启动的 cron 作业Hourly, Weekly, Daily, or Monthly。所以为了清楚起见,我的 crontab 中已经放置了 4 个 cron 作业,它们将在指定时间运行并选择相应的计划模型。

我面临的问题是自定义功能。我对如何有效地创建后台任务以在用户的​​自定义输入上运行感到困惑。这是一个示例场景。假设我有 3 个用户,每个用户选择一个自定义时间来执行一些工作。

用户 1 选择仅在 1 月、2 月和 3 月完成的自定义任务。用户 2 选择要在星期一下午 1、3、6 和 9 点完成的自定义任务。用户 3 选择仅在每个月的周五至周六进行扫描。

定制还在继续…………

实施这种行为的有效且可行的方法是什么?目前,我很困惑,还没有想出一种方法来根据要求来解决这个问题。根据我所读到的内容,我相信延迟的工作将基于这个基于输入的堆栈溢出问题自定义工作对我有所帮助,但具有如此多的可变性,这怎么可能。一些帮助和指导将不胜感激。谢谢你。

标签: ruby-on-railsrubycron

解决方案


我可能会采用一种机制,在保存配置时将作业排入队列以备下次发生。然后,在它运行后,计算下一次出现,依此类推。在对配置进行更改时,不要忘记首先删除已经安排好的运行。这对于一些 ActiveJob 适配器可能会很棘手,这就是为什么如果您还没有对特定的适配器做出决定,我想推荐que。但是你也可以在 Sidekiq中做到这一点。

为了便于计算下一次出现,您可以使用例如ice_cube gem。


推荐阅读