azure-webjobssdk - 删除 SingletonAttribute 后无法在 Azure WebJob 中获取 Singleton 锁

标签 azure-webjobssdk

我有一个 WebJob,其中包含具有 TimeTriggerAttribute 的函数。它们还有一个 SingletonAttribute,因此它们不会并行执行。

部署在应用服务中,一切都按预期运行。

在本地运行它时,它确实按预期工作了一段时间,然后作业主机报告的输出:

Development settings applied

Found the following functions:

MyNamespace.WebJobs.Functions.MyFunctionAsync

Unable to acquire Singleton lock (bd99766f202e4ac4ba230557b7180bd2/MyNamespace.WebJobs.Functions.MyFuncitonAsync.Listener).

我删除了单例属性,但该消息仍然显示。我还重新构建了项目并重新启动了机器。没有任何帮助。

我重命名了该函数,并且它再次按预期安排。现在我还可以重新添加 SingletonAttribute 并且一切都按预期工作。当我将其重命名回原来的名称时,错误又出现了。

我该怎么做才能再次从作业主机获取锁?

最佳答案

通过阅读this article我发现在我设置的 SingletonAttribute 之上,TimeTriggerAttribute 在幕后使用了另一个。谢谢Janley Zhang .

默认情况下,主机 ID 在部署中保持不变。因此,当使用同一存储帐户的多个开发人员在本地执行代码时,他们会尝试获取相同的 blob 租约,并且只有第一个会成功。

我最终为每个开发人员使用了不同的主机 ID,例如

if (jobHostConfiguration.IsDevelopment)
{
    jobHostConfiguration.UseDevelopmentSettings();
    jobHostConfiguration.HostId = Environment.UserName.ToLowerInvariant();
}

关于azure-webjobssdk - 删除 SingletonAttribute 后无法在 Azure WebJob 中获取 Singleton 锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49403131/

相关文章:

azure - 是否有可能使用 IAsyncCollector 而不依赖 azure webjobs?

c# - 计划的 .NET WebJob V3 示例

azure - 如何在最新的azure webjob 3.03中指定AzureWebJobsStorage

azure - 从单个 Web 应用程序同时运行同一 Azure WebJob 的多个实例

Azure Webjob - 访问本地文件系统

azure - 如何处理应用洞察中webjobs的异常?

c# - OnDemand WebJob 在几分钟后失败

asp.net-mvc-5 - WebJob和SignalR集线器之间的通信

dependency-injection - 静态函数范围内 DbContext 的依赖注入(inject) Ninject 与 WebJobs

Azure Web 作业有时无法连接到存储帐户