vitalets / tinkoff-invest-api

Node.js SDK для работы с Tinkoff Invest API
45 stars 11 forks source link

Не нашёл информации про обработку ошибок #14

Open devoln opened 1 year ago

devoln commented 1 year ago

Если превышен лимит на количество запросов в минуту, нужно самому обрабатывать эту ситуацию или библиотека сама повторит запрос с нужной задержкой? Если самому, то как извлечь нужную информацию об ошибке? Например о том, что это именно rate limit ошибка, а также время, когда можно выполнить повторный запрос. Предполагаю, что при ошибке будет reject у Promise. Соответственно, await выбросит исключение, но как узнать, какие поля будут у этого исключения?

Думаю, стоит добавить в ReadMe информацию об обработке ошибок.

vitalets commented 1 year ago

Вот тут происходит оборачивание ответа апи в ошибку и как раз добавляется значения rateLImit.

devoln commented 1 year ago

А здесь не опечатка случайно? Двум полям один и тот же хедер присваивается.

error.ratelimitRemaining = metadata.get('x-ratelimit-remaining') || '';
error.ratelimitReset = metadata.get('x-ratelimit-remaining') || '';
vitalets commented 1 year ago

А здесь не опечатка случайно? Двум полям один и тот же хедер присваивается.

error.ratelimitRemaining = metadata.get('x-ratelimit-remaining') || '';
error.ratelimitReset = metadata.get('x-ratelimit-remaining') || '';

Да, опечатка(

Dennis-Nedry-From-Jurassic-Park commented 1 year ago

@vitalets правильно понимаю что доступ к лимитам ratelimit/ratelimitRemaining можно получить только так ?

api.stream.market.trades({ instruments: robot.instruments },  (trade:any) => {
     console.log(trade);
}).catch((err: TinkoffApiError) => {
     console.log(err.ratelimit + '');
})
vitalets commented 1 year ago

@vitalets правильно понимаю что доступ к лимитам ratelimit/ratelimitRemaining можно получить только так ?

api.stream.market.trades({ instruments: robot.instruments },  (trade:any) => {
     console.log(trade);
}).catch((err: TinkoffApiError) => {
     console.log(err.ratelimit + '');
})

Насколько я помню, и в случае успешного запроса к ответу прикрепляется текущее значение ratelimitRemaining. Вот только как его достать сходу не подскажу, надо потрейсить код