Rate limit reached вконтакте что делать
Новые лимиты VK Api
Доброго времени суток.
Круглосуточно работает программа для отслеживания некоторых групп с запросом Photos.GetAllComment.
Сегодня утром обнаружила, что программа стала возвращать ошибку 29: Rate limit Reached.
То есть добавили какие-то лимиты к данному запросу на обращения. На офиицальной странице найти информацию по лимитам не является возможным.
Кто-то столкнулся с чем-то подобным и как получится обойти их?
Раскрутка и продвижениe в Телеграм, Инстаграм, Вконтакте, Авито, Дискорд, Тик Ток и др. https://devorigin.ru/
Программы для рекламы бизнеса, групп, каналов, страниц, сайтов, магазинов. Дешевые прокcи и виртуальные сервера
Как экономить деньги на продвижении? Покупать из первых рук!
partner.soc-proof — именно то, что тебе нужно. SМM панель, у которой покупают все уже более 6 лет.
Rate limit reached вконтакте что делать
На этой странице мы рассказываем об одном из будущих изменений платформы API ВКонтакте. Чтобы посмотреть список всех недавних и грядущих изменений, перейдите к этой странице.
Ожидаемая дата изменений: июнь 2017 года.
Актуальные лимиты на методы:
newsfeed.search — 1000 вызовов в сутки;
wall.search — 1000 вызовов в сутки;
wall.get — 5000 вызовов в сутки.
При указании версии 5.74 возвращается новая ошибка — 29: Rate limit reached.
API для поиска среди публичных данных ВКонтакте предоставляется на общих условиях, мы никак не регламентируем его использование в коммерческих целях.
Наша платформа привлекает всё больше разработчиков, в том числе, сервисов, которые активно используют API для поиска. Нагрузка на инфраструктуру сайта постоянно растёт, и это не всегда оправданно — например, в задаче получения новых записей по ключевому слову большая часть запросов к существующим методам API может оказаться избыточной.
С другой стороны, к сожалению, мы сталкиваемся со злоупотреблениями со стороны разработчиков, которые пытаются обойти ограничения платформы не совсем честными способами.
Мы хотим предложить более эффективное решение для сервисов, которым нужны большие объёмы данных. Streaming API — это инструмент для получения новых данных из поиска без необходимости совершать множество отдельных запросов.
Для НКО и независимых исследований мы предоставим отдельный бесплатный инструмент — Streaming API. С его помощью Вы сможете получать выборку данных из ВКонтакте по Вашему поисковому запросу.
Для коммерческих структур мы предлагаем расширенную версию Streaming API, которая включает 100% публичных данных, удовлетворяющих поисковому запросу.
Кроме того, мы планируем пересмотреть частотные и количественные лимиты на вызовы методов newsfeed.search, wall.search, wall.get таким образом, чтобы снизить нагрузку на платформу. Ужесточение лимитов будет происходить поэтапно, первое изменение запланировано на 7 июня 2017 года.
Если Вы разрабатываете мобильное или игровое приложение с упором на социальное взаимодействие, Вас не затронет это изменение. Вы можете использовать методы newsfeed.search, wall.search и wall.get в обычном объёме, это никак не повлияет на Ваших пользователей.
Если Вы занимаетесь некоммерческими исследованиями, Вам нужно будет перейти к использованию Streaming API вместо работы с перечисленными методами API, поскольку их использование в таких целях станет невозможным.
Если число Ваших запросов к API не укладывается в новые лимиты, Вам необходимо написать в Поддержку, чтобы обсудить условия дальнейшего сотрудничества. Это может быть доступ к расширенной версии Streaming API или более мощному решению для анализа данных ВКонтакте.
Как избежать лимитов VK API?
Здравствуйте, пишу бота на PHP для сообщества вконтакте, столкнулся с такой проблемой.
Бот после 10-15 сообщений от разных людей уходит в игнор на минут 10-15 и так каждый раз.
Может кто подскажет правда ли это дело в лимитах VK API?
У меня вот какие ошибки в неудавшихся запросах:
24.09.2017 14:44:41 Incorrect response text
HTTP/1.1 200 OK
Server: nginx-reuseport/1.13.2
Date: Sun, 24 Sep 2017 11:44:40 GMT
Content-Type: text/html
Content-Length: 17
Connection: keep-alive
Keep-Alive: timeout=30
X-Powered-By: PHP/5.6.30
Чтобы понять, в чём дело, смотрите ответы ВК на каждый запрос – есть ли там поле error. Пишите их в лог, чтобы можно было разобраться пост-фактум.
Чтобы избежать превышения лимитов при наплыве посетителей, не обрабатывайте запросы синхронно, а устройте очередь задач. Поступил запрос от посетителя – создайте задачу и сохраните её в очередь, а серверу ВК ответьте «ок» и больше ничего сейчас не предпринимайте. Другой процесс, постоянно работающий в фоне, пусть берет по одной задаче из очереди, обрабатывает и шлёт ответ пользователю. Пусть учитывает время трёх предыдущих отправленых вызовов к API ВК. И при необходимости, чуть ждёт, прежде, чем выполнять следующий.
А можешь помочь прописать это в vkAPI.php??
это не ошибка)
нужен весь текст, например:
HTTP/1.1 200 OK
Server: nginx-reuseport/1.13.2
Date: Sun, 24 Sep 2017 12:03:34 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
Keep-Alive: timeout=30
X-Powered-By: PHP/5.6.30
Ошибка : Rate limit reached
Описание:
Превышено количество запросов в сутки! Некоторые методы ВК имеют ограничение на количество запросов в сутки с одного аккаунта Решение проблемы*:
Смените аккаунт! Так же, для дальнейшего избежания этой ошибки рекомендуется увеличить интервал!
* Попробуйте проверить всю информацию при рассылке: тексты, подключенного пользователя, прикрепления, списки рассылки и прочее. Все эти факторы могут влиять на выдачу ошибок сайтом ВК и, соответственно, на корректную работоспособность программы.
Помните, что эти ошибки выдает программе сам сайт ВКонтакте и разработчик программы может не знать точную причину возникновеня ошибки, а вариант, предложеный выше может не сработать по разным причинам. В случае возникновения такой ошибки, Вы можете поискать варианты ее решения в интернете. Вы можете использовать следующий запрос в поисковой системе «Ошибка ВКонтакте № Rate limit reached как исправить» или другие подобные запросы на Ваш выбор.
Вариант(ы) решения этой проблемы относятся только к программе VK-Spam-Master. Вы можете скачать программу VK-Spam-Master чтобы получить возможность рассылать сообщения с минимальными потерями и подобными ошибками, и с максимальной поддержкой.
Выше предоставлен список позможных ошибок которые могут возникать у пользователей программы VK-Spam-Master во время использования функционала программы.
Результатом появления таких ошибок может быть все что угодно. К примеру, некоторые ошибки возникают из-за невнимательности пользователей. Как пример можно привести то, что пользователь не выбрал аккаунт ВКонтакте, неправильно ввел список групп для рассылки, не указал текст рассылки, и прочее.
Так же, есть ошибки, появление которых зависит по большей мере от самого сайта ВКонтакте. Например, ошибка, которая требует ввести капчу, ошибки, которые означают достижение пользователем лимитов в рассылке, или ошибка о запрете определенного действия.
На страницах этих ошибок (предоставленых выше) описаны способы их возникновения и возможные варианты их решения, если таковые имеются
Рейт лимиты с помощью Python и Redis
В этой статье мы рассмотрим некоторые алгоритмы рейт лимитов на основе Python и Redis, начиная с самой простой реализации и заканчивая продвинутым обобщённым алгоритмом контроля скорости передачи ячеек (Generic Cell Rate Algorithm, GCRA).
Для взаимодействия с Redis ( pip install redis ) мы будем пользоваться redis-py. Предлагаю клонировать мой репозиторий для экспериментирования с ограничениями запросов.
Ограничение по времени
Первый подход к ограничению количества запросов за период заключается в использовании алгоритма с ограничением по времени: для каждого ограничивающего ключа (rate-key, что-то уникальное, вроде ника или IP-адреса) отдельно хранятся счётчик (изначально задающий предельное значение) и срок действия (период), которые уменьшаются по мере получения запросов.
С помощью Python и Redis можно реализовать этот алгоритм следующим образом:
Можете посмотреть работу этого кода при эмуляции ограничения в 20 запросов в 30 секунд (чтобы было понятнее, я поместил функцию в модуль).
Ограничиваться не будут лишь первые 20 запросов, после них придётся ждать 30 секунд, чтобы снова можно было слать новые запросы.
Недостаток этого подхода в том, что он ограничивает не частоту, а количество сделанных пользователем запросов за определённый период. Если весь лимит будет сразу исчерпан, придётся ждать окончания периода.
Алгоритм текущего ведра (Leaky bucket)
Есть подход, при котором мы можем очень аккуратно ограничивать частоту: это алгоритм текущего ведра. Принцип работы такой же, как у самого настоящего протекающего ведра: мы наливаем воду (запросы) в ведро по самые края, пока какая-то часть воды постоянно вытекает через отверстие в днище (обычно реализуется с помощью фонового процесса). Если количество вливаемой в ведро воды больше, чем количество выливающейся, то ведро наполняется, и когда оно наполнится, новые запросы перестают приниматься.
Можно пропустить этот подход ради более элегантного решения, не требующего отдельного процесса для эмулирования утечки: обобщённого алгоритма контроля скорости передачи ячеек (Generic Cell Rate Algorithm).
Обобщённый алгоритм контроля скорости передачи ячеек
GCRA был создан в телекоммуникационной отрасли, где его называют режимом асинхронной передачи (Asynchronous Transfer Mode, ATM). Он использовался диспетчерах ATM-сетей для задержки или отбрасывания ячеек — маленьких пакетов данных фиксированного размера, — которые приходили с частотой выше заданного лимита.
GCRA отслеживает оставшийся лимит с помощью так называемого теоретического времени прибытия (Theoretical Arrival Time, TAT) каждого запроса:
и ограничивает следующий запрос, если время прибытия меньше текущего ТАТ. Это хорошо работает, если частота равна 1 запрос/период, когда запросы разделены по периодам. Но в реальности частоты обычно вычисляется как лимит/период. Например, если частота равна 10 запросов/60 сек, то пользователю можно будет делать 10 запросов в первые 6 секунд. А с частотой 1 запрос/6 сек ему придётся ждать по 6 секунд между запросами.
Чтобы иметь возможность отправлять в течение короткого периода группу запросов и поддерживать ограничение их количества за период с лимитом > 1, каждый запрос нужно разделить отношением период/лимит, и тогда следующее теоретическое время прибытия ( new_tat ) будет вычисляться иначе. Обозначим время прибытия запроса как t :
В этом случае нам не нужно обновлять ТАТ, потому что у ограниченных запросов нет теоретического времени прибытия.
Теперь соберём финальную версию кода!
Мы воспользовались Redis TIME, потому что GCRA зависит от времени, и нужно убедиться, что текущее время консистентно в течение нескольких развёртываний (расхождение часов между разными машинами может привести к ложно положительным срабатываниям).
Этот код демонстрирует работу GCRA при частоте 10 запросов/60 сек.
Алгоритм не ограничивает первые 10 запросов, но вам придётся ждать не меньше 6 сек, чтобы сделать следующий запрос. Попробуйте запустить скрипт спустя какое-то время и измените величину лимита и периода (например, limit = 1 и period=timedelta(seconds=6) ).
Чтобы сохранить чистоту реализации, я не стал добавлять блокировку между получением и отправкой вызовов. Но она нужна при многочисленных запросах с одинаковым ключом и в одно и то же время. С помощью Lua можно добавить блокировку в виде менеджера контекста.