我有目前的情况。一些大的进程是在Azure Web Jobs上完成的,我们有很多客户,每个客户都可以执行由Azure Queue触发的那些函数的一个实例。我在我们的网站(Azure应用服务)上有一个按钮显示"取消执行",我如何在单击该按钮后为该客户取消该Azure Web Job的执行?
我正在考虑创建一个取消队列,触发WebJob,并有一些逻辑来取消其他执行,是否有一些方法?我应该使用取消令牌吗?
public static void EngineForProcessQueue([QueueTrigger(WebJobHelper.JOB_FOR_PROCESS_QUEUE)] string message, TextWriter log)
{
ProcessQueueMessage(message, log);
}
谢谢srgrn,在您的网站点击按钮停止web工作。您需要指定进程id/作业名.
你可以使用Kudu API和powershell
脚本来终止web job进程
$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"
更多信息请参考此处