Веб-API Steam запускает игры с несколькими идентификаторами SteamID

#python #urllib #steam-web-api

#python #urllib #steam-веб-api

Вопрос:

Мы пытаемся получить игры, принадлежащие большому количеству пользователей, но наша проблема в том, что через некоторое время лимит вызовов API (100 000 в день) увеличивается, и мы перестаем получать результаты.

Мы используем 'IPlayerService/GetOwnedGames/v0001/?key=APIKEYamp;steamid=STEAMID' в нашем вызове, и это работает для первых записей.

Существует несколько других запросов, подобных GetPlayerSummaries запросу, которые принимают несколько идентификаторов Steam, но, согласно документации, этот принимает только один.

Есть ли какой-либо другой способ объединить наши запросы? Мы используем Python и urllib.request библиотеку для создания запроса.

Ответ №1:

В зависимости от полезной нагрузки запросов у вас есть следующие возможности:

  • если каждый запрос приносит только самые свежие обновления, вы можете сериализовать идентификаторы steam, когда получите ответ о превышении дневного лимита
  • если у вас есть возможность контролировать с помощью полезной нагрузки запроса, какие данные вы получаете, вы могли бы использовать многопоточный / многопроцессорный подход, который использует запросы запроса и идентификаторы steam из нескольких общих ресурсов

Комментарии:

1. Сериализовать? Вы имеете в виду, как сохранить те, которые он не смог создать? Мы уже делаем это, но проблема в том, что мы хотим обработать множество идентификаторов steam, и нам пришлось бы выполнять этот процесс неделями, прежде чем мы получили все.

2. Второе предложение также не помогает решить проблему, поскольку это ограничение API, а не ограничение вычислений… Если мы выполняем вызовы из 20 потоков, то он все равно выполнит ровно 100.000 вызовов, а затем просто перестанет получать ответы.

3. @creyD, что касается # 2, не совсем, потому что я пытался сказать, что каждый поток / процесс должен использовать другой идентификатор SteamID

4. Что вы имеете в виду под ключами API? Единственная проблема в том, что это работает только в том случае, если у вас есть пул из примерно 100 ключей API, а для нас это просто невозможно, так как вам нужно будет создать учетную запись steam для каждого ключа.

5. @creyD, ах да, моя ошибка, я имел в виду ключи API. Ну, если вы не можете получить больше ключей API, я не уверен, что это возможно. Правила Valve довольно строго регламентируют количество звонков в день. Они упоминают, что вы можете увеличить лимит с разрешения Valve, если будете придерживаться текущих правил .. что бы это ни значило.

Ответ №2:

Как @andreihondrari косвенно указал в своем комментарии под своим ответом, можно запросить получение ключа API, который может получать более 100 000 вызовов в день. Это указано в части «Лицензия на веб-API Steam и данные Steam» документации:

Вы ограничены ста тысячами (100 000) обращений к веб-API Steam в день. Valve может одобрить более высокие ежедневные лимиты звонков, если вы придерживаетесь настоящих Условий использования API.

Это может быть сложно, и есть вероятность, что вы не получите одобрения, но это практически единственный стабильный способ, которым вы можете пойти.


Кроме того, теоретически вы могли бы использовать несколько ключей Steam Web API, НО:

  • Каждый ключ API по-прежнему имеет ограничение в 100 000 вызовов в день, поэтому вам нужно будет реализовать отказоустойчивость и переход между используемыми ключами и, возможно, потребуется создать множество учетных записей.
  • Поскольку у каждого пользователя есть свой собственный список друзей и заблокированный список, ключ API может «видеть» исключительно часть сообщества Steam (в противном случае данные друзей не являются общедоступными). Таким образом, возможно, вы используете один ключ API, который не может «видеть» определенного пользователя, когда вы могли бы использовать другой, чтобы «видеть» его должным образом.
  • Вам понадобится уникальный адрес электронной почты для каждой созданной учетной записи.

Примечание: Наличие нескольких учетных записей на самом деле соответствует TOS Valves согласно этому сообщению на Arqade.