管理从Flask应用程序调用速率受限的API

时间:2017-08-14 16:44:50

标签: python flask queue python-multiprocessing

我有一个Flask应用程序(除此之外)必须与速率受限的API()进行交互,不能在某些内容中向API发出超过 x 的请求给定的时间单位)。但是,Flask应用程序对API的要求是不均衡的 - 有时需求远远超过API允许的程度,有时候一分钟或几小时都没有需求。

调用API以异步方式发生是好事 - Flask应用程序不需要阻止并等待响应。

所以我想知道如何最好地实现这一点。

我认为最好的方法是使用FIFO队列进行单独的处理,该队列以固定的间隔(低于API的限制速率)进行调用 - 有点像漏桶算法。

foreach ($html as $section) {
    echo $section;
}

但是我不确定如何设置它并让Flask应用程序与队列交互(只是在新请求发生时按下它们)。

似乎芹菜(或类似物)过度杀伤。

我应该查看python-daemon还是使用multiprocessing.Queue创建子进程?最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为芹菜是解决问题的最佳方法。这正是芹菜所做的,它被python社区高度采用来解决像你这样的问题。

这并不是一种矫枉过正,因为它并不难以设置和安装。 configure,and you can read about it in Flasks documentation itself

大约有30行代码:)