gpt4 book ai didi

c# - 如何在回收/重新启动WebApp后使用TimeTrigger自动启动Azure WebJob

转载 作者:行者123 更新时间:2023-12-03 03:09:41 26 4
gpt4 key购买 nike

我正在 Azure WebApp 中使用 WebJob。该作业执行一个方法:

public static void ProcessQueue(
[TimerTrigger("00:02:00")] TimerInfo timerInfo,
[Queue("queue")] CloudQueue queue,
[Table("processing")] CloudTable processingTable,
TextWriter log)
{
// do sth...
}

TimeTrigger 选项来自 Microsoft.Azure.WebJobs.Extensions

我将 WebApp 设置为在 "always on" mode 中运行。

但是,如果我要重新启动或更改应用程序设置,WebApp 是否可能在内部进行回收?我认为。

因为在此之后我收到以下错误:

[11/10/2016 08:22:24 > 36d12e: SYS ERR ] WebJob run failed due to: System.Threading.ThreadAbortException: Thread was being aborted. at Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase job, IJobLogger logger, String runId, String trigger, ITracer tracer, Int32 port) at Kudu.Core.Jobs.TriggeredJobRunner.<>c__DisplayClass10_1.b__0(Object _)

因此,我尝试在 WebJob 上设置计划,还尝试将 CRON 计划粘贴到目录中,但没有任何帮助我在重置/回收后使作业“运行”。

更新1
我的 exe 的内容 (Main())

JobHostConfiguration config = new JobHostConfiguration();
config.Tracing.ConsoleLevel = TraceLevel.Verbose;
config.Queues.MaxDequeueCount = 10;
config.UseCore();
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();

更新2
如果我在 Azure 门户中手动连续部署,一切都会按预期运行(感谢 mathewc)。但这是一个手动步骤;)。我处于 DevOps 场景中,所有内容都将由 Visual Studio Team Services 构建、创建和部署,并且您无法设置任何选项来将作业部署为连续。 p>

最佳答案

根据您显示的调用堆栈,您似乎可能错误地将作业部署为触发而不是连续 WebJob?使用 WebJobs SDK 时,您应该按照描述连续部署 WebJobs here .

一旦以连续模式运行,如果您更改应用程序设置或以其他方式导致重新启动,您的 WebJobs 也将重新启动,这是正确的。然而,TimerTrigger 的内部调度程序将确保作业恢复后继续按计划运行。

关于c# - 如何在回收/重新启动WebApp后使用TimeTrigger自动启动Azure WebJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40528727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com