Ide*_*ity 5 azure azure-webjobs azure-functions
我想知道信号量(锁)是否可以在 Azure 函数中工作。我不希望两个单独的网络作业同时运行。网络工作采用相同的应用程序服务计划。
这是我可以用信号量保证的吗?(因为这可以实现跨进程锁定?)
第一个问题:您谈论的是 Functions 和 WebJobs。哪一个?
如果您的应用服务计划进行任何扩展,信号量将不起作用,因为两个实例可能在两台不同的计算机上启动。好处是:(对于 WebJobs)有一个简单的解决方案。
[Singleton]
public static async Task ProcessImage([BlobTrigger("images")] Stream image)
{
// Process the image
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,在任何给定时间仅运行 ProcessImage 函数的单个实例。当该函数由添加到图像容器的新图像触发时,运行时将首先尝试获取锁(blob 租约)。一旦获取,在函数执行期间将保持锁定(并且更新 blob 租约),确保不会运行其他实例。如果在该函数运行时触发另一个函数实例,它将等待锁,并定期轮询它。
您可以在此处找到更多信息:Azure WebJobs SDK - Singleton
编辑:
如果您使用的是 Azure Functions:那些基于 TimerTrigger 运行的函数似乎作为 Singletons 运行。
定时器触发器支持多实例横向扩展。特定计时器函数的单个实例在所有实例上运行。
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |