Каким командам praw требуется сетевой запрос? - PullRequest
0 голосов
/ 10 марта 2020

Прав ли я, что каждая строка этого кода выполняет только один запрос?

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

Я знаю, что Reddit api предлагает 600 запросов в каждом 600-секундном периоде времени. Мне нужна эта информация для более эффективного использования API.

1 Ответ

1 голос
/ 11 марта 2020

Этот фрагмент делает два запроса. Во-первых, при доступе к sm.comments в строке 3 загружаются комментарии к представлению из API Reddit. Затем в той же строке вызов replace_more(1) заменит ровно один объект MoreComments, который выполняет дополнительный запрос.

Чтобы выяснить, сколько сетевых запросов выполняется с помощью некоторого кода PRAW, посмотрите в разделе из документации по регистрация . Добавьте этот фрагмент из этой страницы вверху вашего скрипта:

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)

Каждая строка, начинающаяся с «Выборка», представляет собой другой сетевой запрос, а последующие строки описывают запрос далее.


Вызов кадра

Вы говорите

Я знаю, что Reddit api предлагает 600 запросов в каждом 600-секундном периоде времени. Мне нужна эта информация для более эффективного использования api.

Хотя я не могу точно знать, что вы имеете в виду под «эффективнее использовать api», если вас беспокоит, что вы будете go над ограничение скорости, вам не нужно беспокоиться об этом вообще. Одной из ключевых особенностей PRAW является то, что он обрабатывает ограничение скорости для вас, обеспечивая выполнение запросов с максимально возможной частотой, не нарушая ограничение скорости.

...