Comments (6)
@proton Мы это решает с помощью банальных эксепшенов, т.е. если эксепшен возник, то пауза, потом перезапрос (при возможности смена токена, если у вас их несколько), раз 5 перезапросили, все фейл.
from vkontakte_api.
Ну это понятно, сложность в том, что нужно перезапустить конкретный запрос с конкретными параметрами.
К api обращаюсь из множества мест, думаю, как избежать дублирования кода.
P.S. Погуглил, узнал про retryable.
from vkontakte_api.
Вообще реализовать retry запроса в самом геме - мысль очень здравая. Добавлю в roadmap к следующей версии.
from vkontakte_api.
@7even я вижу появилась функция опция в настроках config.max_retries = 2
Есть вопросы =)
Какие типы ошибок ретраятся, а какие нет?
Просто видов ответа ВК огромное множество.
И тут важно что считается ошибкой и по какому принципу.
Просто могут быть ситуации, что ответ не ожиданный, но ошибкой он считаться не будет. Поэтому тут нужна точность. =)
Какая пауза между запросами? Похоже ее нет.
Эта фича была бы интересна для сетевых ошибок или вылезания за лимит запросов, но тогда нужна обязательно пауза.
from vkontakte_api.
Для этого используется стандартный фарадайный middleware :retry
, а он перехватывает только StandardError
и Timeout::Error
, причем паузы перед повторным запросом нет.
Можно в принципе написать свой middleware, но для этого надо собрать список всех ошибок, которые будем ловить - потому что у меня сейчас нет в разработке приложений, использующих vkontakte_api
.
Ошибки типа Too many requests per second
, как и другие ошибки, выбрасываемые в виде VkontakteApi::Error
, я бы не стал тут отлавливать - нет смысла долбить один и тот же ошибочный запрос, а если превышен лимит запросов - то нужна более тонкая логика определения интервала до следующего запроса.
from vkontakte_api.
OK, ладно, будем пользоваться. StandardError и Timeout::Error уже чать проблем закрывают.
Посмотрим, как это на практике работает.
Лично у нас сейчас стоит обработка по сл. видам ошибок
RETRY_EXCEPTIONS = [
VkontakteApi::Error,
Errno::ENETUNREACH,
Faraday::Error::TimeoutError,
Faraday::Error::ConnectionFailed
]
Есть еще и другие, но там, более хитрая логика, да.
from vkontakte_api.
Related Issues (20)
- Непонятная ошибка HOT 2
- Proxy? HOT 1
- Одновременные запросы HOT 1
- cannot load such file -- typhoeus/adapters/faraday HOT 1
- Уберите строгие зависимости гемов HOT 4
- Как посылать сообщения в сообщества? HOT 3
- Rails 5 HOT 3
- Ограничение запросов в секунду HOT 1
- Working with VK stored procedures HOT 3
- Deprecation warning HOT 9
- Hashie::Mash#count Warning HOT 1
- Возвращаемые значения в методе wall.get HOT 1
- Поведение groups.get в test и development environment HOT 2
- :facepalm: HOT 1
- Версия API стала обязательной на вконтакте HOT 6
- Проблема с зависисмотями HOT 5
- Жив ли проект?
- id33266175 HOT 1
- vzl
- 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vkontakte_api.