首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理来自Flask应用程序的对速率受限API的调用。

管理来自Flask应用程序的对速率受限API的调用。
EN

Stack Overflow用户
提问于 2017-08-14 16:44:49
回答 1查看 771关注 0票数 2

我有一个Flask应用程序,它必须与速率受限的API交互(也就是说,在给定的时间单位内不能向API发出超过x的请求)。然而,Flask应用程序对API的需求是不均衡的--有时需求远远超过API所允许的,有时一次不需要几分钟或几个小时。

对API的调用可以异步进行--没有必要让Flask应用程序阻塞和等待响应。

因此,我想知道如何最好地实现这一点。

我认为最好的方法是有一个独立的进程,其中有一个FIFO队列,它在一定的时间间隔内进行调用(小于API的限制率) --有点像漏桶算法。

代码语言:javascript
复制
from multiprocessing import Queue

q = Queue()

...

# This runs all the time
while True:
    sleep(SOME_TIME)
    if q.empty() == False:
       # pop data and use make the API call

但我不知道如何设置它,并让Flask应用程序与队列交互(只是在出现新请求时将其推送)。

芹菜(或类似的)似乎也是杀伤力过大。

我应该研究python还是使用multiprocessing.Queue创建一个子进程?最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-14 17:49:18

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

这并不是过火,因为它的设置和配置并不难,你可以在烧瓶文档中读到它。

大约有30行代码:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45679210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档