Azure Octopus部署了不在两个位置同时运行的连续WebJob

Azure Octopus部署了不在两个位置同时运行的连续WebJob,azure,azure-webjobs,octopus-deploy,azure-webjobssdk,Azure,Azure Webjobs,Octopus Deploy,Azure Webjobssdk,我有一个连续的webjob,需要在TimerRigger上的两个位置运行两个WebApp。当我从VisualStudio将webjob部署到这两个位置时,一切都很好,两个webjob同时运行 现在,我已经准备好使用Octopus Deploy开始部署它。我已经通过两个步骤成功创建了一个计划,并将程序集放置在Azure中web应用(app\u data\jobs\continuous\{jobname})下的正确位置。问题是一次只有一个webjob执行其作业,即使两个webjob都处于运行状态。如

我有一个连续的webjob,需要在TimerRigger上的两个位置运行两个WebApp。当我从VisualStudio将webjob部署到这两个位置时,一切都很好,两个webjob同时运行

现在,我已经准备好使用Octopus Deploy开始部署它。我已经通过两个步骤成功创建了一个计划,并将程序集放置在Azure中web应用(
app\u data\jobs\continuous\{jobname}
)下的正确位置。问题是一次只有一个webjob执行其作业,即使两个webjob都处于运行状态。如果我停止并启动正在执行的webjob,则另一个webjob将开始执行其作业,而我关闭/打开的webjob的状态为“正在运行”,但从未执行其作业。另外,如果我从VisualStudio重新部署其中一个,它们将再次在两个位置执行各自的作业


我没有对singleton做任何事情,实际上我已经尝试通过使用带有
{is_singleton:false}
的“settings.job”文件来关闭它。Octopus对这个包做了什么,使Azure认为webjob是一个单例应用程序吗?

我猜这个问题是由于对您部署的两个应用程序使用了相同的存储帐户和主机id造成的。当您这样做时,WebJobs SDK将其视为一个已扩展到两个实例的单一Web应用程序,并确保计时器仅在其中一个实例上运行


最简单的解决方案是为每个应用程序使用不同的存储帐户。

没错,我为每个webjob创建了单独的存储帐户。一旦我更改了连接字符串,它们都按预期执行了各自的作业。我还有一个后续问题。主机id是什么?@mathewc可以比我更好地解释这一点,所以我让他说:)HostId指的是JobHostConfiguration.HostId(在源代码中)。基本上,它是由同一JobHost的多个实例共享的ID。运行时确保所有实例共享相同的ID。TimerTrigger的单例行为在wiki中进行了解释。