我具有长颈瓶的应用程序(除其他事项外)必须与速率限制API(即互动,不能使内约有超过X请求的API给定单位时间)。然而,Flask应用程序对API的需求并不均衡 - 有时需求远远超过了API所允许的范围,有时一次不需要几分钟或几小时。管理调用从瓶应用速率限制API
它的罚款对API的调用异步发生 - 没有必要为瓶应用程序阻止和等待响应。
所以我不知道如何才能最好地实现这一点。
我想最好的办法是有一个单独的进程与FIFO队列,这使得在一些固定的时间间隔调用(小于限速为API) - 有点像漏桶算法。
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应用程序与队列交互(只是在发生时推送新的请求)。
看来还芹菜(或类似)是矫枉过正。
我应该寻找到蟒蛇守护或者创建拥有multiprocessing.Queue一个子进程?最好的办法是什么?
公平'nuff。将继续调查其他选项的同时重新审视。谢谢。 – PartialOrder