我具有長頸瓶的應用程序(除其他事項外)必須與速率限制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