在Azure中,曾经 触发的Web作业 已开始?我们需要做什么 - 阻止它?
背景:
我们的Web作业填充了一个服务总线队列,然后扩展了我们的工作者角色 - 我们的工作者角色正在使用第三方API - 并且正在收到错误。这导致我们的队列变得越来越大 - 并且创建了越来越多的工作者角色。这很贵。
在Azure中,曾经 触发的Web作业 已开始?我们需要做什么 - 阻止它?
背景:
我们的Web作业填充了一个服务总线队列,然后扩展了我们的工作者角色 - 我们的工作者角色正在使用第三方API - 并且正在收到错误。这导致我们的队列变得越来越大 - 并且创建了越来越多的工作者角色。这很贵。
正如Kobynet在上面解释的那样,我们正在使用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"
正如Kobynet在上面解释的那样,我们正在使用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"
我不确定这是什么时候添加的,但我设法通过Kudu Process Explorer杀死了这些工作。
HTTPS:// [websitename] .scm.azurewebsites.net / ProcessExplorer /
等待进程出现,只需右键单击并终止进程。
我们发现的最佳选择是使用 KUDU api 获取进程列表,然后终止所需的webjob进程。
您可以通过单击托管webjob的应用服务上的“重新启动”按钮来执行此操作。它实际上清除了所有作业,您需要重新部署。
注意:此按钮仅在新门户网站“portal.azure.com”上提供,但不在旧门户网站上提供。
希望这可以帮助。