Azure Web 作业单例功能已锁定
Posted
技术标签:
【中文标题】Azure Web 作业单例功能已锁定【英文标题】:Azure web job singleton function is locked 【发布时间】: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();
我收到的消息:
【问题讨论】:
【参考方案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 秒,如上所述。
这大大减少了锁定行为。
【讨论】:
以上是关于Azure Web 作业单例功能已锁定的主要内容,如果未能解决你的问题,请参考以下文章
将站点部署到 Azure 时出现“OperationalError:数据库已锁定”