哪个praw命令需要网络请求?

问题描述 投票:0回答:1

我对吗,这段代码的每一行只发出一个请求?

sm = reddit.submission(url="...")
sm.comment_sort = 'top'
sm.comments.replace_more(1)
comments = sm.comments.list()

我知道Reddit api在每600秒的时间段内提供600个请求。我需要此信息才能更有效地使用api。

python reddit praw
1个回答
0
投票
此代码段提出了两个请求。首先,当您访问第3行的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的主要功能之一是为您处理速率限制,确保您在不违反速率限制的情况下尽可能频繁地发出请求。

© www.soinside.com 2019 - 2024. All rights reserved.