1

我将我的计划项目计划设置为:20090326T112200|20990426T112200|127|00:20:00

它应该每 20 分钟运行一次。但在我部署它们之后,这个时间表似乎从未运行过。

web.config 中的调度如下所示:

<scheduling>
    <!-- Time between checking for scheduled tasks waiting to execute -->
    <frequency>00:05:00</frequency>
    <!-- Agent to process schedules embedded as items in a database -->
    <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="00:10:00">
        <param desc="database">core</param>
        <param desc="schedule root">/sitecore/system/tasks/schedules</param>
        <LogActivity>true</LogActivity>
    </agent>
    <!-- Agent to process schedules embedded as items in a database -->
    <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="00:10:00">
        <param desc="database">master</param>
        <param desc="schedule root">/sitecore/system/tasks/schedules</param>
        <LogActivity>true</LogActivity>
    </agent>

有什么帮助吗?谢谢。

4

3 回答 3

10

当我试图弄清楚为什么计划任务没有触发时,我遇到了这篇文章,并认为我会针对我所拥有的特定场景发布解决方案。

我发现的问题是我安装了 Sitecore SIM InitializeSpeedBooster.cofig,它删除了以下阻止计划任务运行的内容。

    <processor type="Sitecore.Pipelines.Loader.InitializeScheduler, Sitecore.Kernel">
      <patch:delete />
    </processor>

从配置中删除该 patch:delete,您仍然可以更快地初始化 Sitecore,但会运行计划任务。

可以在我的博客文章中找到关于Sitecore 计划任务不工作的更详细的解释。

于 2016-07-25T16:17:46.550 回答
3

由于其体系结构,调度是 ASP.NET 应用程序中的一个一贯问题。在我看来,Sitecore 已尝试解决此问题,但效果一般。Barbosa 描述了一个明确的问题,但 Sitecore 有一个您可以使用的内置 keepalive 系统。在我的 web.config(6.3 版)中,它是在您发布的数据库调度代理之后直接配置的。

我们没有评估问题所需的所有信息。但是,从您的评论来看,您的 Last Run 字段似乎是空的?这是个问题。它必须具有调度工作的值。仅当“现在”和上次运行值之间的时间间隔大于“计划”字段中的时间值时,计划项目才会启动。

以下是我的 Sitecore 网站上运行正常的示例(RAW 值):

Schedule: 20000101|21000101|127|23:59:00
Last run: 20121126T074001

所以...下一个问题是:您是否在日志中看到调度代理的输出?首先确保您正在记录 INFO 级别。您应该看到如下内容:

1924 10:40:22 INFO  Scheduler - Adding agent: Sitecore.Tasks.DatabaseAgent (interval: 00:10:00)

如果您没有看到,那么 Sitecore 没有启动调度程序,您应该打开一个 Sitecore 支持请求。如果您确实看到了这一点,那么问题很可能是您的 Sitecore 计划或命令项。您应该看到调度代理的输出,它正在启动/停止您的特定命令。如果您的计划项目失败,这将发生错误输出。这将我们带到下一步......

您的计划项目有一个命令字段,该字段必须链接到系统/任务/命令下的有效项目。该项目的类型和方法字段实际上指定了正在执行的方法。如果这些设置正确,我将采取的下一步是创建一个带有单个按钮的一次性 ASPX 页面......它执行此方法。如果不起作用......好吧,那么你知道问题出在哪里。

希望这可以帮助。

于 2012-11-26T21:49:28.200 回答
3

Sitecore 将仅在应用程序池未关闭时运行计划任务。换句话说,如果您的应用程序没有收到足够的流量,IIS 可能会循环关闭应用程序池以节省资源。为防止这种情况发生,您可以设置一个保持活动状态的服务,该服务在设定的时间间隔内向您的应用程序发出请求,以确保应用程序池永远不会关闭。

于 2012-11-22T23:16:41.007 回答