我对吗,这段代码的每一行只发出一个请求?
sm = reddit.submission(url="...")
sm.comment_sort = 'top'
sm.comments.replace_more(1)
comments = sm.comments.list()
我知道Reddit api在每600秒的时间段内提供600个请求。我需要此信息才能更有效地使用api。
sm.comments
时,这将从Reddit API加载提交的注释。然后,在同一行上,调用replace_more(1)
将恰好替换一个MoreComments
对象,这将产生一个附加请求。要找出某些PRAW代码正在发出多少网络请求,请查看logging文档中的部分。在脚本顶部的页面上添加此代码段:
import logging
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
logger = logging.getLogger('prawcore')
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
然后,当您运行脚本时,将看到描述每个请求的调试输出。对于您的摘要,我的输出看起来像这样:
Fetching: GET https://oauth.reddit.com/comments/fgi5bd/ Data: None Params: {'limit': 2048, 'sort': 'top', 'raw_json': 1} Response: 200 (116926 bytes) Fetching: POST https://oauth.reddit.com/api/morechildren/ Data: [('api_type', 'json'), ('children', 'fk5u680,fk5tgxt,<--snip-->,fk5u67w,fk5ug3f'), ('link_id', 't3_fgi5bd'), ('sort', 'top')] Params: {'raw_json': 1} Sleeping: 0.21 seconds prior to call Response: 200 (32753 bytes)
以“ Fetching”开头的每一行是另一个网络请求,随后的行进一步描述了该请求。
框架挑战您说
我知道Reddit api在每600秒的时间段内提供600个请求。我需要此信息才能更有效地使用api。虽然我无法确切地知道“更有效地使用api”的含义,但是如果您担心会超出速率限制,则完全不必担心。 PRAW的主要功能之一是为您处理速率限制,确保您在不违反速率限制的情况下尽可能频繁地发出请求。