13

我有一个与网站关联的 Web 作业,它被配置为连续运行,它所做的只是监视队列中的消息并进行处理。

我的网站处于共享模式,目前几乎没有任何流量,因此我设置了每 1 分钟请求一次主页的虚拟服务,以防止网站在此测试中被关闭,并且可以正常工作正如预期的那样,我可以注意到网站本身并没有关闭。但是,除非我转到 Azure 管理门户并查找 webjob 状态,否则此 webjob 会在大约一个小时内关闭。我去那里的那一刻,它再次启动,然后在几分钟到一个小时内关闭。

此网络作业的日志文件显示如下内容:

[02/13/2015 09:19:45 > 4660f6: INFO] Job host started
[02/13/2015 10:19:41 > 4660f6: SYS INFO] WebJob is still running
[02/13/2015 10:20:35 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopping
[02/13/2015 10:20:35 > 4660f6: INFO] Job host stopped
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Success
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopped

我可以看到我的网站仍在运行并返回主页,但工作本身已停止。

现在,当我登录管理门户查找状态时,我可以在日志中看到:

[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Success
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopped
[02/13/2015 14:56:15 > 4660f6: SYS INFO] Status changed to Starting
[02/13/2015 14:56:17 > 4660f6: SYS INFO] Run script 'WebJobs.exe' with script host - 'WindowsScriptHost'
[02/13/2015 14:56:17 > 4660f6: SYS INFO] Status changed to Running
[02/13/2015 14:56:19 > 4660f6: INFO] Found the following functions:
[02/13/2015 14:56:19 > 4660f6: INFO] WebJobs.NotificationsProgram.ProcessQueueMessage
[02/13/2015 14:56:19 > 4660f6: INFO] WebJobs.NotificationsProgram.PublishNotification
[02/13/2015 14:56:19 > 4660f6: INFO] WebJobs.NotificationsProgram.ProcessMessages
[02/13/2015 14:56:19 > 4660f6: INFO] Job host started

只要网站处于活动状态,关于如何确保 Webjob 处于活动状态的任何想法?或者至少使网站在返回运行状态时也启动 webjob。

更新 1

我的 webjob 本身是一个非常简单的,如下所示:

static void Main(string[] args)
{
    JobHost host = new JobHost();
    host.RunAndBlock();
}

并且触发函数看起来接近于这样:

public static void WriteLogPOCO([QueueTrigger("logqueue")] BlobInformation blobInfo, TextWriter logger)
{
    logger.WriteLine("Queue message refers to blob: " + blobInfo.BlobName);
}

有什么我必须在这里做的,以表明这项工作应该遵循网站的生命周期,即每次启动网站时启动。

更新 2

我试图查看 Process Explorer,当 WebJobs 停止时,我看到了三件事之一。如果不转到管理门户,我不知道如何查看作业日志,因此目前不知道实际的日志。

有时这 有时我看到这个 在此处输入图像描述

但我确信作业没有运行,因为它不会处理队列中的任何消息,直到我进入管理门户。

pingdom 结果如下图所示,表明网站本身正在运行,没有任何中断: Ping Dom 结果

问候基兰

4

2 回答 2

19

如果您要在共享模式下运行,那么这种行为是预期的。如果您有持续运行的 Web 作业,建议您打开Always On 。但是,这是BasicStandard的一项功能,因此您需要更改您的模式或重新考虑您的解决方案。

另外,请注意从此链接中所做的这些注释。

在此处输入图像描述

在此处输入图像描述

于 2015-02-13T17:50:26.090 回答
0

webjobs 停止,因为网站正在关闭。在日志中,您有以下行:

[02/13/2015 10:20:35 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
于 2015-02-13T17:40:46.783 回答