取消单个 WebJob 执行

Posted

技术标签:

【中文标题】取消单个 WebJob 执行【英文标题】:Cancel single WebJob execution 【发布时间】:2021-11-11 13:07:30 【问题描述】:

我有现在的情况。一些大流程是在 Azure Web Jobs 上完成的,我们有很多客户,每个客户都可以执行由 Azure Queue 触发的那些功能的实例。我在我们的网站(Azure 应用服务)上有一个按钮,上面写着“取消执行”,我如何在单击该按钮后为该客户取消该 Azure Web 作业的执行?

我正在考虑创建一个取消队列来触发该 WebJob 并具有一些取消其他执行的逻辑,有什么方法可以做到吗?我应该使用取消令牌吗?

public static void EngineForProcessQueue([QueueTrigger(WebJobHelper.JOB_FOR_PROCESS_QUEUE)] string message, TextWriter log)

      ProcessQueueMessage(message, log);

【问题讨论】:

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

感谢srgrn,在您的网站中单击按钮停止网络作业。您需要指定进程 ID/作业名称

您可以使用Kudu API 和powershell 脚本来杀死网络作业进程

  $username = $website.PublishingUsername
    $password = $website.PublishingPassword
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("0:1" -f $username,$password)))
    $ps = Invoke-RestMethod -Uri "$apiBaseUrl/processes" -Headers @Authorization=("Basic 0" -f $base64AuthInfo) -Method GET    
    $id = $($ps | where $_.name -eq $jobname ).id
    Invoke-RestMethod -Uri "$apiBaseUrl/processes/$id" -Headers @Authorization=("Basic 0" -f $base64AuthInfo) -Method DELETE    
    write-host "killed process $id"

参考here for more info

【讨论】:

以上是关于取消单个 WebJob 执行的主要内容,如果未能解决你的问题,请参考以下文章

取消设置单个命令的环境变量

如何(取消)将多个指标转换为单个列?

如何为所有 PickerViews 创建单个完成和取消按钮?

在单个页面上取消/删除/隐藏LeadPages ExitBox

将日期列取消透视到 Oracle 中复杂查询的单个列

如何在 C# 中等待单个事件,带有超时和取消