您可以对 Azure 函数或存储队列的输出进行速率限制吗?
Can you rate limit an Azure Function or output of a Storage Queue?
我触发了一个存储队列 Python Azure 函数,该函数将作业提交给第三方限速 API (1 request/minute)。触发该功能的队列会定期接收突发消息,因此我需要一种方法来确保该功能在收到第一条消息后立即触发,第二条消息 1 分钟后,第三条消息 2 分钟后,等等,直到队列为空。
是否可以对队列或函数进行速率限制,所以我每分钟只运行函数一次,直到队列为空?
无法对存储队列进行速率限制(除了队列自然受到存储事务速率限制的速率限制,存储事务速率限制比您当前所需的速率限制大几个数量级)。
您可以为 Azure 函数设置计时器触发器,而不是在队列消息到达时触发 Azure 函数。这将允许您在计时器上设置 1 分钟的间隔,您的函数可以在其中读取消息并调用 3rd-party API.
您需要指定一个计时器值,它是一个 NCRONTAB 表达式,格式如下:
{second} {minute} {hour} {day} {month} {day-of-week}
每 1 分钟的表达式如下所示:
"0 */1 * * * *"
有关计时器触发器的更多信息 here。
看看 NextVisibleTime 属性:
我触发了一个存储队列 Python Azure 函数,该函数将作业提交给第三方限速 API (1 request/minute)。触发该功能的队列会定期接收突发消息,因此我需要一种方法来确保该功能在收到第一条消息后立即触发,第二条消息 1 分钟后,第三条消息 2 分钟后,等等,直到队列为空。
是否可以对队列或函数进行速率限制,所以我每分钟只运行函数一次,直到队列为空?
无法对存储队列进行速率限制(除了队列自然受到存储事务速率限制的速率限制,存储事务速率限制比您当前所需的速率限制大几个数量级)。
您可以为 Azure 函数设置计时器触发器,而不是在队列消息到达时触发 Azure 函数。这将允许您在计时器上设置 1 分钟的间隔,您的函数可以在其中读取消息并调用 3rd-party API.
您需要指定一个计时器值,它是一个 NCRONTAB 表达式,格式如下:
{second} {minute} {hour} {day} {month} {day-of-week}
每 1 分钟的表达式如下所示:
"0 */1 * * * *"
有关计时器触发器的更多信息 here。
看看 NextVisibleTime 属性: