【问题标题】:Synchronizing work performed by Azure Functions同步 Azure Functions 执行的工作
【发布时间】:2020-06-08 00:07:43
【问题描述】:

我正在处理以下问题:

我的应用程序在触发时分析 PDF 文档。每个 PDF 文档有多个页面(通常为 1-20 页)。我创建了以下工作流程:

  1. 触发分析时,每张发票按页拆分
  2. 每个页面都是单独的分析器(OCR、一些 NLP 等),运行连接多个操作(SQL 提取、从 Blob 获取文件、运行 Azure Function1、运行 AF2 等)的 Azure Logic 应用程序

到目前为止一切顺利,我将过程并行化以使其执行得更快。

我不明白的是,如何去并行化。具体来说,在分析完 PDF 文档的所有页面后,我需要运行 Azure 函数 3,它会根据所有页面的结果得出结论。

我不确定我对如何使用 azure 函数的理解是否正确,但我将其视为一种多线程。我要问的是如何将以下(非常)伪代码转换为 Azure 云应用程序:

list_of_tasks = []
for page in PDF_pages:
   # start analyzing page in scalable Azure function, writes results to database
   task = pageAnalyzer.start(page);
   list_of_tasks.append(task)

# wait until all tasks done
await Tasks.whenAllDone(list_of_tasks)
# get results of all tasks from DB and conclude analysis. 
finishDocumentAnalysis()

感谢大家的帮助:)

编辑

由于我们使用了一些机器学习模型,我们使用 Python 作为编程语言。

【问题讨论】:

  • 您的描述是每个页面触发一个带有逻辑应用程序的功能,但是您的代码正在分析整个 pdf 文件中的 for 循环。那么你的问题点是什么?

标签: python azure cloud azure-functions


【解决方案1】:

您需要查看持久函数,它们实际上是标准函数之上的一层,允许您完全执行此类操作,并且它们处理扇出和返回的所有棘手部分。

查看this document 以开始使用。

这个overview document 也有助于了解持久函数的工作原理,它讨论了一些其他常见的用例/模式。

@silent 在 cmets 中指出,fan out/in pattern is described in the above overview 的图表也很漂亮。

【讨论】:

  • 同意,扇出/扇入模式中的持久功能是这里的方法:docs.microsoft.com/en-us/azure/azure-functions/durable/…
  • @silent - 已将该链接添加到答案中,谢谢。顺便说一句,您网站上的图片不错!我以前住在基姆湖边,你住在德国南部吗?
  • 酷,非常好:)
猜你喜欢
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2019-05-27
  • 1970-01-01
  • 2023-01-15
  • 1970-01-01
相关资源
最近更新 更多