gpt4 book ai didi

c# - 如何在基于事件的设计中使用 Azure Batch 并终止/清理已完成的作业

转载 作者:行者123 更新时间:2023-12-02 23:46:15 26 4
gpt4 key购买 nike

使用 Azure Batch,我的项目使用带有函数和队列的基于事件的设计将作业添加到池中。当作业完成时,即使所有任务都已完成,它仍然是“事件的”。

(使用应用程序服务计划的单个)功能在计时器上触发,该计时器从队列中读取 X 数量的消息。功能:

  • 创建一个池(如果不存在)
  • 创建工作
  • 将任务添加到该作业

效果很好。但是,一旦任务完成,即使所有任务都已完成,作业状态仍保持事件状态。我希望作业终止/清理/将状态设置为“已完成”。

我希望我的函数是短暂的,并且不希望有任何状态。因此,我没有使用 foreach (job.CompletedTasks()) 中的 CloudTask 任务来等待任务的状态。

另一种方法是使用任务依赖项,这需要 batchClient.Utilities.CreateTaskStateMonitor() ,因此需要有状态方法。

在基于事件的设计中使用 Azure Batch 的最佳方式是什么?具体来说,任务完成后如何终止/清理作业?

最佳答案

一旦该作业下的所有任务完成,您就可以让该作业“自动完成”。有一个属性叫做 OnAllTasksComplete在 CloudJob 对象上。

您首先需要设置此 property当您向作业添加任务时,更改为 NoAction(默认值)。将所有任务添加到作业后,您可以将该值更新为 TerminateJob,然后调用 Commit()/CommitAsync()。请注意,如果您保留最初提交的 CloudJob,则需要先执行 Refresh()/RefreshAsync(),然后才能修改属性并提交。或者,您可以GetJob()/GetJobAsync()修改,然后提交。

对于基于事件的设计,您可以查看启用 Batch service analytics看看这是否适合您的场景。

关于c# - 如何在基于事件的设计中使用 Azure Batch 并终止/清理已完成的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488207/

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