管理Flask应用程序对ratelimited API的调用

2024-06-14 09:28:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

对API的调用可以异步发生——Flask应用程序不需要阻塞并等待响应。在

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

我认为最好的方法是有一个单独的进程,它有一个FIFO队列,以固定的时间间隔(小于API的限制速率)进行调用——类似于leakybucket算法。在

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守护进程还是使用多处理队列?最好的办法是什么?在


Tags: the方法算法api应用程序flask间隔队列
1条回答
网友
1楼 · 发布于 2024-06-14 09:28:30

我认为芹菜是解决你问题的最好办法。这正是celery所做的,而且python社区高度采用它来解决类似于您的问题。在

这并不是一个过度杀戮,因为设置和配置and you can read about it in Flasks documentation itself并不难。在

大约30行代码:)

相关问题 更多 >