取消单个 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 创建单个完成和取消按钮?