【问题标题】:Run Many Instances Of Same Azure WebJob Concurrently From Single Web App从单个 Web 应用程序同时运行相同 Azure WebJob 的多个实例
【发布时间】:2017-06-17 07:26:58
【问题描述】:

我创建了一个简单的 azure web 作业,它会从传入的网站中抓取一些数据,对其进行解析并将其添加到数据库中。

它只是一个接受参数的简单控制台应用程序(.exe 文件)。它会上传到 Azure 上的 Web 应用程序。

但是,我的印象是这个网络作业会根据需要启动并完成多次。因此,如果我一个接一个地向 webjob 发出 3 个命令,我最终会得到 3 个 webjob 实例同时运行。

但是,它不起作用。我只能让它运行一次。其他两个命令失败。是否可以在单个 Web 应用程序中拥有一个 Web 作业,并让它同时运行,同时同一个 Web 作业处理不同的东西也在运行?

【问题讨论】:

    标签: azure azure-webjobs azure-webjobssdk


    【解决方案1】:

    根据我的经验,触发的 WebJob 不能同时运行。

    我的建议是,与其手动触发作业,不如将其设为在队列中侦听的连续 WebJob。然后发送一个队列消息,其中包含您想要的每次运行的参数。连续的队列监听作业可以同时运行。

    您需要稍微修改作业。它必须运行作业主机而不是在启动时触发逻辑,并且您必须将逻辑移动到队列触发的函数中。

    【讨论】:

    • 感谢您的评论。有代码示例吗?
    • 连续队列监听作业可以批量运行(即:一次发送多个请求),但我认为这与“同时运行”不同
    • docs.microsoft.com/en-us/azure/app-service-web/… "同时拾取并行执行的队列消息的最大数量(默认为 16)。"根据文档,存储队列触发器每个实例一次最多并行运行 16 条消息。
    【解决方案2】:

    使用 Azure WebJobs,您在应用服务计划中的每台主机只能运行一个 Web 作业实例。

    是否可以在单个 Web 应用程序中拥有一个 Web 作业并让它同时运行,同时处理不同的东西的同一个 Web 作业也在运行?

    是的,只要您将 ASP 扩展到所需的主机数量(相当于所需的并发 webjob 数量)

    最终,您应该考虑使用 Azure 函数来处理此类工作负载。见this feedback request

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 2018-04-23
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多