如何使一个类来管理从api请求的其他类的令牌?

时间:2018-09-12 10:46:57

标签: python

我正在尝试处理对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的类,然后返回结果,但是我需要该类可以被多个类访问。

0 个答案:

没有答案