主机不是运行;请求将排队但不会执行,直到主机启动

Host is not running; requests will be queued but not execute until the host is started

经常当我重新发布一个有一些小改动的 webjob 并尝试重新运行一个 Webjob 函数时,SCM 在门户网站中显示以下警告,我无法执行该函数

Host is not running; requests will be queued but not execute until the host is started.

在这种情况下主机总是运行,作业设置为单例,多个主机应该没有问题。

WebJobs 仪表板会显示此消息,直到它从主机收到更新的 "heartbeat" 消息,表明主机是 运行。 JobHost 将心跳消息写入 blob 存储(在路径 /heartbeats 下的 azure-webjobs-hosts 容器中)。仪表板轮询特定主机 ID 的心跳 blob,并在检测到主机尚未启动时显示此消息 运行。在主机启动和仪表板看到 blob 更新之间可能存在 最小 延迟。

对我来说,这不是心跳问题或 HostId 命名更改。我的 WebJobs 在连续模式下 运行 正常,但不能单独 运行 它们。这是在 AssemblyInfo.cs.

中更新版本后发生的

至resolve/workaround:

  • 下载Azure Storage Explorer
  • 在您的应用服务上,从 AzureWebJobsStorageAzureWebJobsDashboard
  • 复制连接字符串
  • 停止您的 WebJobs
  • 连接到 Azure 存储资源管理器中的 Web 作业存储帐户
  • 删除这些容器和队列:

    • 容器

      • azure-jobs-host-archive
      • azure-jobs-host-output
      • azure-webjobs-dashboard
      • azure-webjobs-hosts
    • 队列

      • azure-webjobs-*
      • 如果您使用自定义 hostid,则用于您的 Web 作业的其他队列
  • 启动 WebJobs