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

dre*_*dev 5 azure azure-webjobs

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

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

我还应该声明我已将整个应用服务计划升级到S1并将托管Web作业的Web应用程序设置为Always On ...

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

Mat*_*nta 5

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

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

我同时执行这两项操作,将Console.Write添加为"heartbeat"并添加App Setting.


Jon*_*oJr 1

我们在长期运行的网络作业方面遇到了很多问题,最终购买了付费支持,因为这些作业经常失败,而我们只是无法弄清楚原因。这种情况已经持续了2个多月了,仍然没有解决办法。他们确实建议使用 local_cache 设置,该设置会暂时停止重新启动,但最终重新启动。

我们已将它们从已经完美运行多年的虚拟机中移出。在我看来,网络作业不适合长时间运行的作业,您应该迁移到虚拟机。我们有许多短期运行的作业,它们做得很好,但对于长期运行的任何作业,我认为网络作业还没有准备好迎接黄金时段。我们花了很多时间在这些问题上提供支持,但没有效果,坦率地说,我们觉得此时我们只是在浪费时间。为避免痛苦,请前往虚拟机并在 6 个月内重新审视此问题。