【问题标题】:Azure web job singleton function is lockedAzure Web 作业单例功能已锁定
【发布时间】:2016-07-26 17:56:42
【问题描述】:

我正在使用 Azure Web 作业连续运行一些逻辑。该函数是一个单例函数。但是,在重新启动 Web 应用程序后尝试运行此功能后,我收到“等待锁定”消息。这是否意味着同一函数的另一个实例正在保留锁?我该如何解决这个问题?

功能:

namespace Ns 
{

    public class Functions
    {
        [Singleton]
        [NoAutomaticTriggerAttribute]
        public static async Task ProcessMethod()
        {
           while(true){
           //process logic here
           await Task.Delay(TimeSpan.FromSeconds(20));}
        }

    }
}

主程序:

namespace ns
{   
    class Program
    {      
        static void Main()
        {               
            var host = new JobHost();
            host.RunAndBlock();             
        }
    }
}

我收到的消息:

【问题讨论】:

    标签: asp.net azure azure-storage azure-web-app-service azure-blob-storage


    【解决方案1】:

    根据Singleton attribute description,Blob 租约在函数执行期间需要锁。

    如果另一个函数实例在此函数执行时被触发 运行它会等待锁,定期轮询它。

    如果您有多个应用服务计划实例,这意味着存在多个 Web 作业,因此仪表板可能会在一个运行时显示其他 Web 作业的锁定状态。

    您可以在您的存储帐户上创建view the blob lease locks

    另一种选择是尝试Listener Singletons,但我从未尝试过手动触发器。

    【讨论】:

    • 是否可以停止同一个 Web 作业的所有实例?此外,当我部署 Web 应用程序时,是否会自动部署随附的 Web 作业?谢谢!
    • 另外,即使我可以查看它,我如何获得正确功能的锁定?谢谢!
    • “正确”功能是什么意思?锁和 Singleton 的设计使函数的一个实例正在运行,同一函数的其他实例被锁定。它用于定义要限制缩放的函数。 Webjob 实例的数量等于您运行它的应用服务计划的实例数量。
    • 如果 Web 应用程序和 Web 作业都存在于同一个存储库中并且您创建了 required configuration file,则会自动部署它们。
    【解决方案2】:

    我在 Azure 中禁用了生产功能,并将 listenerlockPeriod 设置为 15 秒,如上所述。

    这大大减少了锁定行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 2022-10-25
      • 2022-10-05
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多