如何确保一次只运行一个 Azure Function BlobTrigger?
How to ensure only one Azure Function BlobTrigger runs at a time?
我有一个在 Azure Functions 中实现多个 BlobTriggers 的用例(使用 Linux 消费计划)。例如,在 Azure 存储中,我将有 5 个不同的客户端,其目录结构如下:
client1/file.txt
client2.file.txt
client3/file.txt
client4/file.txt
client5/file.txt
client1/file.txt
和 client2/file.txt
可以同时在 Azure 存储中删除。为了防止竞争条件和超过 1.5 GB 的内存限制,我希望 client1/file.txt
的 BlobTrigger 等待 client2/file.txt
的 BlobTrigger 完成,反之亦然(这里的顺序无关紧要,只是他们最终都执行了)。
是否需要单独设置队列进程?我可以使用预览设置 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT
轻松实现吗?
编辑:使用持久函数会是更好的解决方案吗?
您应该能够通过确保将 MAX SCALE OUT 值设置为 1 来执行此操作,这样它一次只会处理 1 个文件。您还可以将 consumption\pricing 模型从消费更改为应用服务计划一。这样你就可以使用你想要的层,然后你也可以有更多的可用内存(取决于你选择的层)。
我有一个在 Azure Functions 中实现多个 BlobTriggers 的用例(使用 Linux 消费计划)。例如,在 Azure 存储中,我将有 5 个不同的客户端,其目录结构如下:
client1/file.txt
client2.file.txt
client3/file.txt
client4/file.txt
client5/file.txt
client1/file.txt
和 client2/file.txt
可以同时在 Azure 存储中删除。为了防止竞争条件和超过 1.5 GB 的内存限制,我希望 client1/file.txt
的 BlobTrigger 等待 client2/file.txt
的 BlobTrigger 完成,反之亦然(这里的顺序无关紧要,只是他们最终都执行了)。
是否需要单独设置队列进程?我可以使用预览设置 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT
轻松实现吗?
编辑:使用持久函数会是更好的解决方案吗?
您应该能够通过确保将 MAX SCALE OUT 值设置为 1 来执行此操作,这样它一次只会处理 1 个文件。您还可以将 consumption\pricing 模型从消费更改为应用服务计划一。这样你就可以使用你想要的层,然后你也可以有更多的可用内存(取决于你选择的层)。