Crossrefapi速率限制问题

时间:2018-10-10 14:32:07

标签: python api cross-reference

我正在尝试创建一个脚本,该脚本将允许我使用python中的CrossRefApi下载特定期刊的所有pdf文章。有用。但是我似乎对速率限制间隔/限制限制有问题,因为我收到了很多文件,其中说我已经超出了配额。我不明白的是这是如何工作的。我正在使用的脚本如下:

import requests
from crossref.restful import Journals, Etiquette


def main():
    headers = {"CR-Clickthrough-Client-Token": "XXXXXXXXXXXXXXXXXXX", 'X-Rate-Limit-Interval': '10s', 'X-Rate-Limit-Limit': '50'}
    my_etiquette = Etiquette('jEFF analysis', '0.1', 'n/a', 's.h.young@brighton.ac.uk')  # edit this to be your details
    journals = Journals(etiquette=my_etiquette)
    jeff = journals.query("Ecology of Freshwater Fish")
    issns = {issn for journal in jeff for issn in journal["ISSN"]}
    i = 1
    for issn in issns:
        for article in journals.works(issn).filter(has_full_text='true'):
            res = requests.get(article["link"][0]["URL"], headers=headers)

            filename = "out/%d_out.pdf" % i
            with open(filename, "w") as f:
                f.write(res.content)
                i+=1


if __name__ == "__main__":
    main()

我尝试了最长15分钟(“ 15m”)的速率限制间隔,但这实际上导致前100个左右文件的配额速率超出消息。我知道速率限制间隔是查询API的时间-因此2s(限制间隔)到50(限制限制)将是2s内的50个查询。也许我错了。如果有人可以帮助我理解它应该如何工作,我将不胜感激。

0 个答案:

没有答案