gpt4 book ai didi

c# - HTTP按需触发azure函数多次调用自身

转载 作者:行者123 更新时间:2023-12-04 10:43:14 27 4
gpt4 key购买 nike

我添加了http触发的azure函数并将其部署在函数应用程序中。函数应用程序仅包含一个此 http 按需触发器 azure 函数。功能应用程序有应用程序服务计划,而不是消费计划。

此外,函数应用程序版本为 ~1。因此超时是无限的。

在azure函数代码中,我正在读取一个包含数千条历史记录的文件并处理这些记录。这项任务需要一个多小时的时间。这是一次性任务。

当我在部署后调用此 azure 函数时,它会被调用,一段时间后我注意到它再次被调用并再次处理已经处理的记录。

谁能帮我理解azure函数的调用策略,如果azure函数长时间运行而没有任何状态,它会回调自己吗?

如果是,如何停止它再次回调,直到它完成处理。

最佳答案

函数应该是短暂的,它们不应该运行很长时间。函数的优势在于具有较小或可变吞吐量的短期执行。

只要有可能,将大型函数重构为较小的函数集,这些函数集可以协同工作并快速返回响应。例如,Webhook 或 HTTP 触发功能可能需要在特定时间限制内得到确认响应; Webhook 需要立即响应是很常见的。您可以将 HTTP 触发器负载传递到队列中,以供队列触发器函数处理。这种方法可以让您推迟实际工作并立即返回响应。

看看这个:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-best-practices#avoid-long-running-functions

借助耐用功能,您可以轻松支持长时间运行的流程,应用 Async HTTP APIs 。如果您处理的函数需要一些时间来处理有效负载或请求,那么在“应用服务计划、WebJob 或持久函数”下运行是正确的方法。

根据 @Thiago Custodio 的建议,您还需要将大文件拆分为较小的文件,并将它们传递给持久函数工作流程中的事件。

关于c# - HTTP按需触发azure函数多次调用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59834265/

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