长时间运行Azure Webjob - 继续停止

时间:2016-03-21 10:45:36

标签: azure azure-webjobs

我一直在使用Azure webjobs一段时间了,但我仍然在努力弄清楚为什么一些运行时间非常长的Web作业失败了。

我有使用Azure SDK构建的webjob,并从队列消息中触发。这个Web作业从Azure Blob存储中提取一大堆XML,其中包含有关110000项的信息,然后循环使用这些并使用REST WebApi2端点使各种HttpClient请求在我们的表存储和DocumentDB中创建各种实体...这个过程是懒惰我正在研究的东西,但它运行了好几天......这很好,因为没有紧迫感,分开从它随机停止,有时两天后...最后一次唯一的消息是“线程被中止”。我定期注销和http调用,所以它不像工作就坐在那里什么都不做...... 的更新:

我还应该声明我已将整个应用服务计划升级到S1并将托管网络作业的网络应用设置为始终开启......

我也查看了“WEBJOBS_RESTART_TIME”,但这不是相关的,因为它是关于停止后重新启动的事情,我假设连续工作没有错误不应该做!

2 个答案:

答案 0 :(得分:5)

我发现有一件长时间运行的webjobs。要让线程继续工作很长一段时间,您必须:

  • 立即使用Console.Write写入输出
  • 添加名为 WEBJOBS_IDLE_TIMEOUT source)的应用设置,该设置定义环境在关闭之前等待空闲webjob(无控制台输出)的时间。

我同时执行这两项操作,添加Console.Write就像" heartbeat"并添加应用程序设置。

答案 1 :(得分:1)

我们在长期运营的网络工作中遇到了很多问题,最终购买了有偿支持,因为这些工作经常会失败,我们无法弄清楚原因。这已持续了2个多月,仍然没有解决方案。他们确实建议使用local_cache设置,该设置暂停了重启,但最终重新启动了。

我们已经把它们从一个完美运行多年的vm移开了。在我看来,Web作业不适合长时间运行的作业,你应该转到vm。我们有一些短期工作,他们做得很好,但对于任何长期运行,我认为网络工作还没有准备好黄金时间。我们花了很多时间来支持这些问题无济于事,坦率地说,我们觉得我们现在只是在浪费时间。节省自己的痛苦,然后转到vm并在6个月内重新审视。