Twitter Search API Ограничение скорости Zend - PullRequest
1 голос
/ 17 февраля 2012

Мы пытаемся создать приложение, которое позволит пользователю отображать последние твиттерские новости о 20 футбольных командах.Мы используем Zend_Service_Twitter_Search с запросом футбольной команды, например, «Арсенал».

Проблема, с которой мы сталкиваемся, заключается в том, что в любой момент веб-сайт может принимать запросы на просмотр новостей всех 20 команд, поэтому при обращении к API, если многие пользователи делают это, будет достигнут часовой предел.

Нам нужны последние новости для всех 20 команд, поэтому мы не хотим кэшировать данные более 1 минуты.У кого-нибудь есть какие-то советы по этому поводу? Я прошел через документацию, но никаких предложений там нет.

Приветствия

J

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Я недавно реализовал нечто подобное.Ответ прост: определите, сколько запросов вам нужно сделать.Скажем, 1 для каждой команды, так что 20 за раз.Разделите 60 секунд (период ограничения скорости) на (ограничение скорости / количество запросов) и просто кешируйте свои результаты в нечто вроде memcache для этого количества секунд.Затем, когда пользователь посещает сайт, извлеките результаты из memcache, если они есть, в противном случае обновите их.Memcache хорош тем, что он автоматически удаляет данные, срок действия которых истек, поэтому вы не будете превышать ограничение скорости и всегда будете иметь самые свежие данные из возможных (без нарушения ограничения скорости).

Итак, если ограничение скоростиравно 200 в минуту (я знаю, что это не так, но это облегчает математику), вы кешируете свои результаты в течение 60 / (200/20) = 6 секунд.Таким образом, при максимальной скорости вы будете делать 10 запросов для каждой из 20 команд в минуту, то есть 200 запросов в минуту, что является ударом по ограничению скорости.

0 голосов
/ 18 февраля 2012

Мне кажется, это скорее проблема дизайна бэкенда.Проблемы, с которыми вы хотите иметь дело:

  1. Предоставление текущих данных для пользователей любого масштаба
  2. , не превышающих пределов API, которые не опубликованы Ограничения Twitter API

Похоже, что решение - это база данных / хранилище данных для сохранения данных.Вы можете совершать 20 звонков API каждую минуту, хранить информацию, а затем делать ее доступной для пользователей столько времени, сколько захотите.

После краткого ознакомления с документацией по API Twitter не похоже, что существуют какие-либо ограничения на хранение данных.Хотя вы, возможно, захотите пересмотреть вопрос о том, как часто следует использовать API поиска, ограничение не публикуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...