首页 > 解决方案 > 有限缩放 Azure 函数

问题描述

我有一个场景,我有一个 URL 流,我需要针对这些 URL 发出 HTTP 请求。然后,我将下载收到的数据并将其保存在 Blob 存储中。我必须使用 Azure 函数来执行此操作,以便仅在实际需要处理 URL 时才为服务付费。

但是,我遇到的困难是想出一种通过有限数量的代理触发下载的方法。虽然我很高兴下载功能可以扩展到我可用的代理数量,但我希望每个代理能够处理它连续接收的每个 URL。换句话说,每个代理必须被限制为一次从一个 URL 下载数据。

我考虑将 URL 放在一个队列中,将代理放在另一个队列中,并在其中一个可用时触发一个函数,然后将使用的代理推回代理队列,但函数只能触发一个。

我还考虑过创建与代理一样多的队列并在队列之间分配 URL,但我不确定如何将每个触发函数的并发限制为一个。

有人知道如何做到这一点吗?

标签: c#azure-functions

解决方案


好的,我通过这篇文章找到了一种方法:

https://medium.com/@yuka1984/azure-functions-%E3%81%AE-singletonattribute%E3%81%A8mode%E3%83%97%E3%83%AD%E3%83%91%E3% 83%86%E3%82%A3-bb728062198e

答案是给[Singleton]函数添加一个属性。

但是,根据此评论,您的实体正在等待处理时您正在花钱:

https://github.com/Azure/azure-functions-host/issues/912#issuecomment-419608830


推荐阅读