簡體   English   中英

哪些 praw 命令需要網絡請求?

[英]Which praw commands need a network request?

這段代碼的每一行都只發出一個請求,我對嗎?

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

我知道 Reddit api 在每 600 秒的時間段內提供 600 個請求。 我需要這些信息才能更有效地使用 api。

此代碼段發出兩個請求。 首先,當您訪問第 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 的主要功能之一是它為您處理速率限制,確保您在不違反速率限制的情況下盡可能頻繁地發出請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM