RoboTradeCode / flash-gate

Торговый шлюз для биржы Exmo
0 stars 1 forks source link

Установить `timeout` запросов в Exmo. #99

Closed 81xx closed 2 years ago

81xx commented 2 years ago
81xx commented 2 years ago

одним из способов проверки можно использовать следующий - выставить timeout меньше пинга, и посмотреть как себя будет вести гейт.

nomnoms12 commented 2 years ago

Предлагаю указать в секции exchange:

"exchange": {
    "exchange_id": "exmo",
    "timeout_ms": 1000,
    ...
}
81xx commented 2 years ago

Под данным issue надо будет описать как ведет себя гейт и предложить через PR решение для @nomnoms12

nomnoms12 commented 2 years ago

Эта задача сводится к добавлению одной строки :)

Разве что протестировать нужно

81xx commented 2 years ago

Эта задача сводится к добавлению одной строки :)

Разве что протестировать нужно

Да, про строку я понимаю, мне главное понять как себя будет вести гейт при ошибке timeout.

khanbekov commented 2 years ago

Протестировал ошибку ccxt.base.errors.RequestTimeout. Гейт будет формировать команду и отправлять на лог-сервер. Ошибка имеет вид:

{
  "event_id": "ec842c84-5321-49ad-bf80-360d56a0e1c6",
  "event": "error",
  "exchange": "exmo",
  "node": "gate",
  "instance": "test",
  "algo": "test",
  "action": "balance_update",
  "message": "exmo GET https://api.exmo.com/v1.1/currency/list/extended",
  "timestamp": 1661537860443721,
  "data": [
    "BTC",
    "USDT",
    "LTC"
  ]
}

За это отвечает вот этот код (он есть для всех watch-функций) https://github.com/RoboTradeCode/flash-gate/blob/b622e064bdff02f424e6ae2365e3dbf67e8fe76a/flash_gate/gate/gate.py#L324-L334

Правда гейт упал, из-за ошибки при вычислении метрик. Они не обернуты в try-except

nomnoms12 commented 2 years ago

Правда гейт упал, из-за ошибки при вычислении метрик

Одну и ошибок увидел и исправил уже: #111

Это не она была?

khanbekov commented 2 years ago

Правда гейт упал, из-за ошибки при вычислении метрик

Одну и ошибок увидел и исправил уже: #111

Это не она была?

Да, именно эта ошибка

81xx commented 2 years ago

Протестировал ошибку ccxt.base.errors.RequestTimeout. Гейт будет формировать команду и отправлять на лог-сервер. Ошибка имеет вид:

{
  "event_id": "ec842c84-5321-49ad-bf80-360d56a0e1c6",
  "event": "error",
  "exchange": "exmo",
  "node": "gate",
  "instance": "test",
  "algo": "test",
  "action": "balance_update",
  "message": "exmo GET https://api.exmo.com/v1.1/currency/list/extended",
  "timestamp": 1661537860443721,
  "data": [
    "BTC",
    "USDT",
    "LTC"
  ]
}

За это отвечает вот этот код (он есть для всех watch-функций)

https://github.com/RoboTradeCode/flash-gate/blob/b622e064bdff02f424e6ae2365e3dbf67e8fe76a/flash_gate/gate/gate.py#L324-L334

Правда гейт упал, из-за ошибки при вычислении метрик. Они не обернуты в try-except

khanbekov commented 2 years ago

https://github.com/RoboTradeCode/flash-gate/pull/112#issuecomment-1229154578 @pybr0 добавил такую обработку. Также добавил обработку исключения превышения rate limit (знаю, это не связано с issue)

{
  "event_id": "60ea40b9-3dda-4a60-9100-cc74eecf2615",
  "event": "error",
  "exchange": "exmo",
  "node": "gate",
  "instance": "benchmark_orderbooks",
  "algo": "benchmark_orderbooks",
  "action": "balance_update",
  "message": "Timeout error",
  "timestamp": 1661590317045388,
  "data": [
    "BTC",
    "USDT",
    "LTC"
  ]
}
{
  "event_id": "f7ebe068-da3e-4489-a8a0-1028deb6b67f",
  "event": "error",
  "exchange": "exmo",
  "node": "gate",
  "instance": "benchmark_orderbooks",
  "algo": "benchmark_orderbooks",
  "action": "order_book_update",
  "message": "Rate limit exceeded",
  "timestamp": 1661590316936390,
  "data": [
    "BTC/USDT",
    "LTC/BTC"
  ]
}