1

我已经为一些 Web 应用程序调用创建了一个触发 Web 作业,但我有一个要求,即触发作业客户应该能够在需要时启动或停止,并且还可以安排。

我已经使用 webjobs rest API 完成了计划部分,但我无法完成启动和停止工作,因为触发器作业没有任何选项。

有没有办法启动和停止触发 webjob。我曾尝试使用 kudo kill 进程,但在 webjob 触发器完成后,它不会出现在进程资源管理器中。

var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{azureUserName}:{azurePassword}"));

if (string.Equals(jobStatus, "STOP", StringComparison.InvariantCultureIgnoreCase)) 
{
  using(var client = new HttpClient()) 
  {
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
    
    //var baseUrl = new Uri($"https://{webAppName}.scm.azurewebsites.net/");
    var requestURl = string.Format("{0}/api/processes", azureWebAppUrl);
    
    var response = client.GetAsync(requestURl).Result;
    
    if (response.IsSuccessStatusCode == true) 
    {
      string res = response.Content.ReadAsStringAsync().Result;
      var processes = JsonConvert.DeserializeObject < List < ProcessData >> (res);
      
      if (processes.Any(x => x.name.Contains(azureWebJobName))) 
      {
        requestURl = string.Format("{0}/api/processes/{1}", azureWebAppUrl, processes.Where(x => x.name.Contains(azureWebJobName)).FirstOrDefault().id);
        response = client.DeleteAsync(requestURl).Result;
      }

      returnStr = "success";
    } 
    else 
    {
      returnStr = response.Content.ToString();
    }
  }
}

请帮助我了解停止和启动触发 Web 作业流程的更好方法。我还发现我们可以将应用程序设置添加到主应用程序,如WEBJOBS_STOPPEDWEBJOBS_DISABLE_SCHEDULE但这将取决于并且每次都需要更新它,我想完全依赖 webjob 设置而不是主应用程序设置。

4

1 回答 1

0

我不知道我是否理解你的问题。

我认为,您可以使用 Quartz( 1 ) 启动作业/作业并使用应用程序设置对其进行安排。

https://www.quartz-scheduler.net/

于 2021-11-01T20:11:02.813 回答