我有一个与网站关联的 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 结果如下图所示,表明网站本身正在运行,没有任何中断:
问候基兰