You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向运行中的Azure Batch作业添加任务并手动控制终止

向运行中的Azure Batch作业添加新任务的实现方案

嘿,我刚好碰到过和你一模一样的场景!其实Azure Batch本身就支持动态往已运行的作业里追加任务,不用停掉现有作业或者重新创建。下面给你两种最常用的实现方式,附上具体步骤和代码示例:

一、用Azure Batch SDK(以.NET为例)

官方SDK是最灵活的方式,不管作业处于什么运行状态(只要不是已终止/完成的终态),都能直接提交新任务。示例代码如下:

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Auth;
using System.Collections.Generic;
using System.Threading.Tasks;

public async Task AddTaskToRunningJob()
{
    // 替换成你的Batch账户信息
    string batchAccountUrl = "https://yourbatchaccount.yourregion.batch.azure.com";
    string batchAccountName = "yourbatchaccountname";
    string batchAccountKey = "yourbatchaccountkey";

    // 初始化Batch客户端
    var credentials = new BatchSharedKeyCredentials(batchAccountUrl, batchAccountName, batchAccountKey);
    using var batchClient = BatchClient.Open(credentials);

    // 定义新任务:这里可以根据你的需求设置命令行、资源文件、输出配置等
    var newTask = new CloudTask("task-new-001", "cmd /c dotnet process-file.exe --input-file input.txt")
    {
        ResourceFiles = new List<ResourceFile>
        {
            // 关联你刚上传到Blob的文件
            ResourceFile.FromStorageContainerUrl("https://yourstorageaccount.blob.core.windows.net/inputcontainer/input.txt")
        }
    };

    // 提交到目标运行中的作业
    await batchClient.JobOperations.AddTaskAsync("your-running-job-id", newTask);
}

二、用Azure CLI快速操作

如果不想写代码,用Azure CLI也能直接添加任务,适合快速测试或者自动化脚本场景:

az batch task create \
    --job-id "your-running-job-id" \
    --task-id "task-new-001" \
    --command-line "cmd /c dotnet process-file.exe --input-file input.txt" \
    --resource-files https://yourstorageaccount.blob.core.windows.net/inputcontainer/input.txt \
    --account-name "yourbatchaccountname" \
    --account-key "yourbatchaccountkey" \
    --account-endpoint "https://yourbatchaccount.yourregion.batch.azure.com"

几个关键提醒

  • 只要作业处于Active状态(没有被终止、完成或删除),就可以随时添加任务,完全不影响现有正在运行的任务。
  • 如果需要批量添加多个新任务,建议用SDK的AddTaskCollectionAsync方法,或者CLI的批量提交方式,减少API调用次数,提升效率。
  • 任务的调度逻辑和你最初创建作业时的设置一致,Batch会自动把新任务分配到空闲的计算节点上,不需要手动干预。

之前没找到方法可能是误以为作业启动后就锁定了任务列表,但实际上Azure Batch的作业设计就是支持动态扩展的,刚好匹配你这种异步上传文件后追加任务的场景~

内容的提问来源于stack exchange,提问作者Chris Watson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:34:48