规模有限的Azure功能

时间:2018-12-14 21:10:01

标签: c# azure-functions

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

但是,我遇到的困难是如何通过数量有限的代理触发下载。尽管我很高兴下载功能可以扩展到可用的代理数量,但我希望每个代理都可以处理其收到的每个URL。换句话说,必须限制每个代理一次只能从一个URL下载数据。

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

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

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

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

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