使用 Web.config 计划任务比使用 Windows 计划任务有啥好处

Posted

技术标签:

【中文标题】使用 Web.config 计划任务比使用 Windows 计划任务有啥好处【英文标题】:What's are the benefits of using Web.config scheduled tasks over for example a Windows scheduled task使用 Web.config 计划任务比使用 Windows 计划任务有什么好处 【发布时间】:2011-04-22 18:36:15 【问题描述】:

我们正在考虑通过将大量任务从网站特定的 web.config 文件拖到一个 Windows 计划任务中来尽可能集中我们的计划任务。 我可以想象这会产生一些负面影响,但我想列出它们,这样我就可以很好地解释什么是最有效的。 我们有不同类型的任务需要定期完成,例如:

Keepalive 在我们运行的不同网站中导入

Sitecore 有它自己的调度器,这使得导入非常容易通过使用这个调度器来运行。另一方面,Sitecore 在 web.config 中也有自己的“KeepAlive”设置,以确保网站运行得更快。

在这个问题上,赞成和反对的意见是什么?您有什么建议? 保持计划任务集中? 从 Keepalive 任​​务中拆分正常导入并将其中一个放在集中式环境中?

【问题讨论】:

【参考方案1】:

Sitecore 原生调度在 Sitecore 上下文中执行,这意味着您可以通过这种方式轻松地与 Sitecore 通信,但应用程序必须处于活动状态才能执行任务。这就是为什么不可能在特定时间运行计划代理,只能在计划的时间间隔内运行,因为不能保证应用程序在给定时刻是健康的。

Windows 任务在上下文之外执行,并且可以在特定时间安排,但是这种方法缺少非常需要的 Sitecore 上下文,这可能会使设计有点复杂,但您始终可以创建一个 Sitecore Web 服务来处理它。

在我见过的实现 Windows 调度程序方法的实际示例中,有“在特定时间发布”的场景: http://sitecoreblog.alexshyba.com/2007/02/publish-at-specific-time.html 我还看到实现了大数据推送,就像你正在谈论的那样。您几乎可以在控制台应用程序中在 Sitecore 上下文之外运行导入代码。通过访问 Sitecore.Configuration.Factory,您可以实例化数据库、获取项目和创建项目。这就是你所需要的。另外,在 http 上下文中运行这样的代码更有效。

【讨论】:

【参考方案2】:

还有第三种选择。

在 Sitecore 中,您可以在 sitecore/system/tasks/schedules/ 中创建任务

依次调用 sitecore/system/tasks/commands/ 中的命令

您可以通过引用运行的方法来创建它。

我自己没有尝试过,所以无能为力。

但是你可以设置一个特定的时间。

有一些帮助 here(尽管这是针对 Sitecore 5.3)。

【讨论】:

以上是关于使用 Web.config 计划任务比使用 Windows 计划任务有啥好处的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 Celery 运行计划任务比使用 crontab 更可取?

win7任务计划

win10在休眠中执行定时任务

win10在休眠中执行定时任务

win7下计划任务schtasks使用详解及"错误:无法加载列资源"的解决方法

win7下计划任务schtasks使用详解及"错误:无法加载列资源"的解决方法