指定重复作业或任务的执行时间的最佳方法是什么?
我正在寻找一种有效指定重复作业执行时间的方法,而无需将显式执行时间写入数据存储。 换句话说,我不想说“作业 x 接下来在 2008 年 12 月 11 日下午 13 点运行”,然后在作业运行后必须更新下周的执行时间,我希望能够说“作业 x 运行于每周四下午 13 点。 我需要能够指定从几分钟到每月一次的任何重复范围。 我的猜测是复发期越短,这变得越困难。 有任何想法吗?
注意:我并不是在寻找有关调度机制的建议。 我无法使用 Windows Scheduler、Cron 或创建 Windows 服务(我别无选择,只能使用 ASP.NET 中的后台线程)。
I am looking for a way of efficiently specifying a recurring job execution time without having to write an explicit execution time to a datastore. In other words, rather than saying 'job x next runs at 13.00pm on 11.12.08' and then having to update the execution time for the following week once the job has run, I want to be able to say 'job x runs at 13.00pm every thursday'. I need to be able to specify a recurrence range of anything from a few minutes to once per month. My guess is the shorter the recurrence period, the more difficult this becomes. Any ideas?
Note: I'm not looking for advice on the scheduling mechanism. I cannot use Windows Scheduler, Cron or create a Windows Service (I have no choice but to use a background thread in ASP.NET).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我已经看到 cron 表达式被广泛用于执行此操作,它可能作为一种内部表示格式很好地工作。
I have seen cron expressions used widely for doing this, it might work well as an internal representation format.
我同意 kamal 的观点,即 Cron 可能是配置调度程序的最简单的解决方案。 它非常灵活 - 您可以将其配置为执行任何操作(在合理范围内)。
我过去曾使用 Quartz.NET 进行调度。 它提供了一个 CronTrigger - 请参阅教程。 您可以在 Web 应用程序中创建一个运行 Quartz 调度程序的线程。
I agree with kamal that Cron is probably the simplest solution to configuring a scheduler. It is very flexible - you can configure it to do just about anything (within reason).
I've used Quartz.NET for scheduling in the past. It provides a CronTrigger - see the tutorial. You could create a thread in your web app that runs the Quartz scheduler.
我实现了一些无人值守的服务(用c#编写的Windows服务),使用cron来管理调度。 该模式功能强大且灵活。 我们可以只使用 cron 表达式来创建我们想要的任何时间的计划。 也许我错了,但我认为 cron 唯一未涵盖的时间表是我们是否想要该月的最后一天,但这从来不是所有服务的要求。
我从互联网上的一篇文章(Atif Aziz 开源)复制了 cron 算法,并在我的实用程序类中实现,多年来一直运行良好。
在我的博客中查看更多详细信息:
CronTab 调度解析器算法
干杯!
罗伯托
I implemented some unattended services (Windows Services written in c#), using cron to manage the scheduling. The pattern is powerful, and flexible. We can create schedules to any time we want, only using the cron expression. Maybe I am wrong, but the only schedule that I think cron doesn't cover is if we want the last day of the month, but this was never a requirement for all services.
I copied the cron algorithm from an article in the internet (open source by Atif Aziz), and implemented in my utility class, working beautifully for years.
See more details in my blog:
CronTab schedule parser algorithm
Cheers!
Roberto