gpt4 book ai didi

azure - 使用 Azure Functions 和 Azure 存储处理长时间运行的任务

转载 作者:行者123 更新时间:2023-12-02 08:16:31 24 4
gpt4 key购买 nike

我想使用 Azure 来处理长时间运行的任务,这些任务无法仅由 Web 服务器处理,因为它们超出了 2 分钟的 HTTP 限制(并且无论如何都会给其带来不必要的负载)。在本例中,生成 PDF 报告可能需要一些时间(2-5 分钟)。我见过使用其他技术(Celery、RabbitMQ、AWS Lamda 等)的解决方案示例,但很少使用 Azure 上的可用技术(本例中为函数和存储)。

我提出的解决方案的详细信息如下(此处有图表)

enter image description here

API(有 3 个端点):

  • 生成报告 - 将消息发布到 Azure 队列存储
  • 获取报告生成状态 - 查询 Azure 表存储的状态
  • 获取报告 - 从 Azure Blob 存储检索 PDF

Azure 队列存储

  • 从 API 接收一条消息,其中包含所请求报告的参数

Azure 函数

  • 将消息添加到 Azure 队列存储时触发
  • 在 Azure 表存储中创建报告生成状态记录,设置为“正在生成”
  • 根据消息中包含的参数生成报告
  • 将输出 PDF 存储在 Azure Blob 存储中
  • 将 Azure 表存储中的报告生成状态记录更新为“已完成”

Azure 表存储

  • 包含报告生成请求和相关状态的表格

Azure Blob 存储

  • 存储 PDF 报告

其他要点

  • 该应用尚未构建 - 因此我没有可以比较的基本案例(例如 Celery/RabbitMQ)
  • 运行报告所需的时间并不是非常重要(即我不关心 Azure Function 冷启动)
  • 不需要使用 Webhooks 等方式立即通知完成情况 - 客户端将使用获取报告生成端点经常轮询 API。
  • 该应用的使用率不会很高,因此拥有一个始终处于事件状态的服务器来处理任务(相对于 Azure Function)似乎是一种浪费。
  • 如果我发现报告生成时间超过 10 分钟,我可以将其拆分为多个 Azure 函数(以避免每个函数 10 分钟执行时间的消耗计划硬性限制)

我的问题很重要,这是否是一个好的方法(对我来说这似乎不错,而且相对具有成本效益,我只是不确定是否有我遗漏的东西)。

最佳答案

这可以使用耐用功能来简化。大部分作业已由框架处理,您还可以查询端点以检查完成状态。

https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp

关于azure - 使用 Azure Functions 和 Azure 存储处理长时间运行的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73024687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com