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

如何在C#中检查是否存在运行中的Cloud Job?

在C#中检查Google Cloud Job运行状态并触发后续任务

核心实现思路

借助Google Cloud官方.NET SDK Google.Cloud.Run.V1,可以直接查询指定Cloud Job的执行实例状态,判断是否存在运行中的任务,再决定是否触发下一个Job。

步骤与代码示例

  1. 安装NuGet包
    先安装Cloud Run Jobs的.NET客户端包:

    Install-Package Google.Cloud.Run.V1
    
  2. 检查Job运行状态
    编写方法查询目标Job是否有处于Running状态的执行实例:

    using Google.Cloud.Run.V1;
    using Google.Api.Gax.ResourceNames;
    using System.Linq;
    
    public async Task<bool> HasRunningJobExecutions(string projectId, string location, string jobName)
    {
        var jobClient = await JobClient.CreateAsync();
        var jobResource = JobName.FromProjectLocationJob(projectId, location, jobName);
        
        // 列出该Job的所有执行记录
        var executions = jobClient.ListExecutions(jobResource);
        
        // 筛选状态为Running的执行实例
        return executions.Any(execution => 
            execution.Status.State == Execution.Types.Status.Types.State.Running);
    }
    
  3. 触发下一个Job
    确认无运行中任务时,调用API触发目标Job:

    public async Task TriggerTargetJob(string projectId, string location, string targetJobName)
    {
        var jobClient = await JobClient.CreateAsync();
        var jobResource = JobName.FromProjectLocationJob(projectId, location, targetJobName);
        
        await jobClient.RunJobAsync(jobResource);
    }
    
  4. 整合逻辑
    将检查与触发逻辑结合:

    public async Task RunNextJobIfIdle(string projectId, string location, string monitorJobName, string nextJobName)
    {
        bool isJobRunning = await HasRunningJobExecutions(projectId, location, monitorJobName);
        if (!isJobRunning)
        {
            await TriggerTargetJob(projectId, location, nextJobName);
        }
    }
    

关键说明

  • 权限配置:确保执行代码的服务账号拥有roles/run.jobs.viewer(查看Job执行状态)和roles/run.jobs.runner(触发Job)的IAM权限。
  • 凭据管理:本地开发可通过gcloud auth application-default login获取默认凭据;生产环境建议使用服务账号密钥文件配置凭据。
  • 状态枚举:Execution.Types.Status.Types.State包含所有可能的执行状态,除Running外,还有Succeeded、Failed、Pending等,可根据需求扩展判断逻辑。

官方文档参考

  • Google.Cloud.Run.V1 命名空间官方API参考
  • Cloud Run Jobs 执行状态官方定义说明

内容的提问来源于stack exchange,提问作者Akesh Jadhav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:40