连续的WebJob会自动停止

Kir*_*ran 13 azure azure-webjobs azure-webjobssdk

我有一个与网站相关联的Webjob,它被配置为连续运行,它所做的只是查看消息队列并处理它.

我的网站处于共享模式,目前几乎没有任何流量,所以我设置了虚拟服务,每隔1分钟请求主页,以防止网站被关闭作为此测试的一部分,并且接缝工作正如预期的那样,我可以注意到网站本身没有关闭.但是,除非我转到Azure管理门户并查找webjob状态,否则此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
Run Code Online (Sandbox Code Playgroud)

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

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

[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
Run Code Online (Sandbox Code Playgroud)

有关如何确保Webjob在网站处于活动状态时处于活动状态的任何想法?或者至少使网站在回到运行状态时启动webjob.

更新1

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

static void Main(string[] args)
{
    JobHost host = new JobHost();
    host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)

并且触发器功能看起来像这样:

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

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

更新2

我试着查看Process Explorer,当WebJobs停止时,我看到了三件事之一.我不知道如何在不进入管理门户的情况下查看作业日志,因此此时不知道实际日志.

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

但我确信Job没有运行,因为它没有处理来自队列的任何消息,直到我进入管理门户.

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

关心Kiran

Ric*_*ney 19

如果您要按照共享模式运行,则会出现这种行为.如果您有持续运行的webjob,建议您打开Always On.但是,这是BasicStandard的一项功能,因此您需要更改模式或重新考虑解决方案.

另外,请注意通过此链接创建的这些注释.

在此输入图像描述

在此输入图像描述

  • @FabrizioAccatino:我对我的问题有一个解决方法,可能对你也有帮助.要求是确保我们调用scm站点并且作业开始运行.所以在我的代码中,当我向队列发布消息时,我明确地使用部署凭证调用scm站点,它启动了我的工作.Andrzej Turski帮我解决了他的代码 - http://stackoverflow.com/questions/28904186/how-can-i-keep-my-azure-webjob-running-without-always-on/28923039#28923039 (3认同)

Vic*_*aci 0

由于网站正在关闭,网络作业停止。在日志中您有以下行:

[02/13/2015 10:20:35 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
Run Code Online (Sandbox Code Playgroud)