我有一个网络作业的计时器触发器设置在午夜格林尼治时间执行。web作业是一个.NET核心控制台项目,它通过DevOps发布管道部署到三个不同的应用服务实例中。在部署到web作业的第一个环境中,按计划触发作业,执行程序运行时使用Kudu日志语句表示成功。在另外两个环境中,web作业是按计划触发的,但是,可执行文件没有按照日志语句的指示运行,没有显示成功。在这三个环境中,日志都表明web作业已经触发,并且已经找到了函数方法,但是只有最初部署它的app实例才执行逻辑。
当在不同的应用服务环境中运行相同的web作业时,是否需要确保每个作业成功执行?我想,因为每个作业的应用程序设置都指向与其相关的同一个存储帐户,但老实说,这是我创建的第一个网络作业,所以我不确定。
我尝试过手动启动门户中的web作业,但由于它是一个计时器作业,我不相信它会以这种方式成功执行
发布于 2022-12-01 04:30:14
正如@Thiago Custodio所说的那样,
每个环境都应该有自己的存储帐户,以便正确地执行触发器。
通常,计时器触发器Web将在任何时间点运行单个实例,因为它具有Singleton锁功能。
当为计时器触发器Web作业或Azure函数启动作业主机时激活此单例锁定功能,该功能只确保单个实例正在运行,或者如果单例锁定功能意味着未获得blob租约,则它将生成该正在运行的计时器触发函数或Web的另一个实例--我先前复制的相似功能没有得到多个实例。
因此,对于每个环境都有单独的存储帐户,如开发人员、阶段/测试、生产都可以轻松地跟踪日志,下面是GitHub Azure Web作业计时器触发单例锁文章,其中给出了不同环境的作业主机配置代码。
https://stackoverflow.com/questions/74620238
复制相似问题