azure - 以编程方式停止 azure 函数

标签 azure azure-functions

你好我知道如果我创建一个由队列中的消息触发的 azure 函数,如果队列中有多个消息,则可以(水平)扩展。换句话说,同一个 azure 函数的多个实例可以运行以处理队列中的消息。

我还知道在 azure 函数中我可以获得正在运行的实例的 ID。 假设当我的 azure 函数实例启动时,我将正在运行的实例的 ID 存储在数据库中。

现在,我的问题是,如何以编程方式停止/终止我的 azure 函数的特定实例(由存储的 ID 标识)?

提前致谢!!

场景

我有一个供我的用户使用的仪表板。他们可以在哪里创建任务。创建任务后,定义将与用户 ID 作为消息一起进入队列。一旦消息在队列中可用,就会触发 azure 函数。现在,当用户刷新仪表板时,她/他会看到任务列表(由他/她创建),无论它们是在运行还是已完成。我现在还需要为他们提供停止正在运行的任务的选项。

现在多个用户可以创建具有不同参数的任务,在同一个队列中发送多个消息,这将导致运行同一个 azure 函数的多个实例。每个实例都与特定用户相关联。如果用户选择停止任务(这是同一个 azure 函数的实例),我需要停止 azure 函数的特定实例(与禁用整个 azure 函数不同)。现在我只知道一个正在运行的实例是 ID,我想知道我是否可以从代码中停止/终止/取消该特定函数实例。

我希望我成功地解释了我的情况。如果您有更多问题,请告诉我。

最佳答案

今天没有办法做到这一点。即使您要终止一个实例,Functions Scale Controller 也可能会发现您需要更多实例进行处理并为您启动另一个实例。

最好能充分理解这里的情况——您是否正在尝试限制横向扩展?或者停止个别失控的功能?

编辑:在阅读您的场景后,您是否查看了 Durable Functions?您应该能够基于队列消息启动编排并使用 OrchestrationClient 管理它们。需要注意的是,Activity 功能一旦启动就无法取消,但如果您足够分解步骤,您将能够终止进程中的编排。有关更多详细信息,请参见此处:

关于azure - 以编程方式停止 azure 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198248/

相关文章:

javascript - 带有 JavaScript 的云 API(亚马逊、Azure)

azure - 使用 azure 命令行工具根据自定义日志创建警报

c# - 从 Azure 函数 HttpTrigger 返回错误详细信息

authentication - AAD 注册了 Azure Functions + GraphAP Delegated + SharePoint Online?

azure 功能身份验证

multithreading - 如何将 Azure Durable Functions Orchestrator 中的逻辑移到另一个类中?

azure - 如何使用 SSL 在 Microsoft azure 中配置部署槽

.net - 项目在什么时候需要 Azure?

.net - 使用 HDInsight hadoop 存储

c# - 本地 Azure 函数 ClaimsPrincipal