Является ли опрос API более эффективным, чем WebSockets, для редких обновлений? - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над созданием торгового алгоритма для криптовалют и добавил несколько различных бирж.

для последних 4 бирж, которые я добавил, я использую конечную точку API обмена для получения цен тикеров для всех монет (я делаюодин вызов API каждые 5 минут на обмен).

Я начал работать над реализацией Coinbase Pro, у которой нет конечной точки для импорта сразу всех тикеров.

Основываясь на моем текущем опыте кодирования, япредложили два варианта ...

Вариант A: совершать 30 вызовов API каждые 5 минут для импорта данных о ценах.

или

Вариант B: подключение через веб-сокеты на 30 разных каналах и обновление словаря с самыми последними обновлениями и отправка в SQL с интервалом в 5 минут.


Мои опасения:

Coinbase очень активна и, по-видимому, происходит несколько обновлений в секунду, когда подключено только 2 веб-сокета.

Является ли расточительным использование веб-сокетов в этом сценарии?

Я не строю высокочастотную торговую стратегию, поэтому небольшая задержка не представляет проблемы.В то же время я обеспокоен тем, что из-за http hangups / timeouts может возникнуть сценарий, при котором 30 запросов могут занять более минуты.

Как хорошо, если опрос API является лучшим решением, буду ли яМожно ли уменьшить время ожидания, используя grequests (для асинхронных http-запросов), urllib3 (пул соединений) или httplib (поддерживая открытые соединения)?

Прошу прощения, если это глупый вопрос, который у меня есть только годопыта программирования, и я не могу найти правильное решение для этой ситуации в Google / stackoverflow.

Любой совет будет принята с благодарностью!

С наилучшими пожеланиями,

Slurpgoose

1 Ответ

0 голосов
/ 08 февраля 2019

Я думаю, вы достаточно хорошо понимаете различие между Long Polling и WebSockets.Как правило, с помощью данных, предоставляемых Coinbase, люди создают информационные панели или приложения реального времени, которые (как вы упомянули) обновляют данные несколько раз за одну секунду. Вот пример .Таким образом, с точки зрения частоты общения, длинный опрос был бы подходящим вариантом.

Однако вот некоторые факторы, которые могут помочь вам принять решение:

  1. Возможно ли, что ваше приложение отправляет новые запросы каждые 5 минут для получения новых данных?Если так, то длинный опрос является решением.Но если у вас есть сценарий использования, когда сервер «проталкивает» некоторые данные в ваши клиентские приложения, то WebSockets - определенно вариант.
  2. Поскольку Long-Polling основан на протоколе HTTP, он не имеет состояния, поэтому есливам нужно, чтобы состояние было единообразным, к сожалению, Long-Polling этого не допустит.Вам придется повторять метаданные в каждом запросе.Принимая во внимание, что с WebSockets соединение будет одним постоянным полнодуплексным соединением, поэтому его состояние всегда будет поддерживаться.

Чтобы узнать больше о лучших вариантах использования WebSockets, вы можете посмотреть это конференц-разговор .

Надеюсь, это поможет разрешить ваш запрос.

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