Azure functions Azure持久功能,用于长时间运行的活动

Azure functions Azure持久功能,用于长时间运行的活动,azure-functions,azure-durable-functions,Azure Functions,Azure Durable Functions,我有一个长时间运行的活动,其执行完成时间将超过10分钟,但它是一个包含许多内部任务的单个活动。我想在消费计划中将此长期运行的活动作为Azure功能运行,但在应用程序服务的高级(或)应用程序服务中不作为成本因素运行。但消费计划上的Azure函数的最大超时时间为10分钟,因此消费计划上的Azure函数将不适用 对于上述要求,Azure持久功能是正确的选择吗?我可以在消费计划中启动持久功能,并考虑将长时间运行的功能作为持久功能“orchestrationcontext”中的活动调用(尽管我的要求与编排

我有一个长时间运行的活动,其执行完成时间将超过10分钟,但它是一个包含许多内部任务的单个活动。我想在消费计划中将此长期运行的活动作为Azure功能运行,但在应用程序服务的高级(或)应用程序服务中不作为成本因素运行。但消费计划上的Azure函数的最大超时时间为10分钟,因此消费计划上的Azure函数将不适用

对于上述要求,Azure持久功能是正确的选择吗?我可以在消费计划中启动持久功能,并考虑将长时间运行的功能作为持久功能“orchestrationcontext”中的活动调用(尽管我的要求与编排或功能链接无关),以经济高效的方式克服Azure功能超时限制


上述方法在技术上可行吗?持久功能“orchestrationcontext/DurableClient”中的活动功能是否会在消费计划的10分钟后得到时间安排?它是否符合最佳实践?请澄清。

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

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

看看这个:


使用持久的功能,您可以轻松支持长时间运行的流程,并应用。当您处理需要一些时间来处理负载或请求的功能时,在“应用服务计划、WebJob或持久功能”下运行是正确的方式。

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

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

看看这个:


使用持久的功能,您可以轻松支持长时间运行的流程,并应用。如果您处理的功能需要一些时间来处理有效负载或请求,在“应用服务计划、WebJob或持久功能”下运行是正确的方式。

如果我了解您的需求,您使用持久功能的主要目标是无服务器,只为您使用的功能付费

如果上述理解是正确的,那么如果不将30分钟长时间运行的函数分解为多个活动函数(可在5分钟或最多10分钟内完成),则无法解决问题

但是你可以用不同的方法来解决你的问题陈述

您可以创建控制台应用程序的docker映像,将其部署到azure容器注册表,消息到达队列后,您可以编写一个简单的队列触发azure函数,该函数可以使用azure容器实例启动此映像

Azure容器实例是无服务器的,只对执行时间收费,在您的情况下,执行时间为30分钟

这将解决您不重构代码而仍然使用无服务器模型的问题


如果我了解您的需求,请告诉我您的想法。您使用耐用功能的主要目标是无服务器,只为您使用的内容付费

如果上述理解是正确的,那么如果不将30分钟长时间运行的函数分解为多个活动函数(可在5分钟或最多10分钟内完成),则无法解决问题

但是你可以用不同的方法来解决你的问题陈述

您可以创建控制台应用程序的docker映像,将其部署到azure容器注册表,消息到达队列后,您可以编写一个简单的队列触发azure函数,该函数可以使用azure容器实例启动此映像

Azure容器实例是无服务器的,只对执行时间收费,在您的情况下,执行时间为30分钟

这将解决您不重构代码而仍然使用无服务器模型的问题


让我知道你对同样的问题的想法

我的要求是,Azure队列中的消息会触发控制台应用程序,该应用程序执行“n”个可能持续30分钟的活动。我可以将这个长时间运行的应用程序代码移植到Azure持久功能而不进行重构,这样持久功能就可以承受30分钟的执行时间吗?通过代码重构,我知道我们可以对不同的Azure活动函数进行不同的活动&通过持久功能完成,尽管整个过程大约需要30分钟。但我想在不进行代码重构的情况下实现它,持久功能中是否有支持此类用例的选项?我的要求是,在Azure队列中丢弃消息,从而触发控制台应用程序,该应用程序执行“n”个可能持续30分钟的活动。我可以将这个长时间运行的应用程序代码移植到Azure持久功能而不进行重构,这样持久功能就可以承受30分钟的执行时间吗?通过代码重构,我知道我们可以对不同的Azure活动函数进行不同的活动&通过持久功能完成,尽管整个过程大约需要30分钟。但我想不进行代码重构,