我正在尝试处理对API的多个类请求,尽管我将速率限制为〜30个请求/秒/令牌,并且我大约有20个令牌。需要提出约3000万个以上的请求,这可能会永远导致!
现在在我的代码中,每个类仅列出4-5个令牌。我正在遍历我的请求,并使用该列表中的下一个令牌。
from ratelimit import limits
que = Queue()
tokens = ('t', 'o', 'k', 'e', 'n', 's')
urls = ['list', 'of', 'urls']
@limits(calls=30, period=1)
def get_api(url, token):
#request info from api
#then store in mongodb
def worker():
while True:
t = que.get()
get_api(t[0], t[1])
que.task_done()
for i in range(len(tokens)):
t = Thread(target=worker)
t.start()
for i, u in enumerate(urls):
que.put((u, tokens[i%len(tokens)))
这是多个类。我宁愿只让所有类共享相同的queue
令牌令牌。.我考虑过创建一个使用队列处理此令牌的类,尽管我如何确保在循环遍历之前仅使用每个令牌一次再次令牌。
本质上。我正在尝试创建一个处理请求API的类,然后返回结果,但是我需要该类可以被多个类访问。