Ваш вопрос немного сбивает с толку.Здесь давайте разберемся с некоторыми проблемами.
Сервер
Выбор протокола связи полностью зависит от того, что реализует сторона сервера, вы просто соответствующим образом разрабатываете своего клиента.
Ниже представлен набор опций и техник, которые я видел:
- HTTP Pooling (что я люблю называть техникой запуска и запуска) Просто выполните HTTP-запрос кзаинтересованная конечная точка на интервальной основе;Кажется, каждая минута - ваш случай использования.Это будет поддерживаться практически всеми HTTP API.
- Длинный пул HTTP Подобный пул, сервер, поддерживающий длинный пул, будет зависать на HTTP-соединении, пока не получит соответствующие данные илитайм-аут достигнут.С точки зрения клиента, вы по-прежнему постоянно запрашиваете данные с интервалом, это просто сервер, который откладывает ответ до получения данных.
- Веб-сокеты (Это идеально подходит для вашего случая) Это, по сути, объединение двух методов (упрощенное здесь), сервер будет отвечать, удерживая соединение, и непрерывно отправлять по нему новые данные.
Клиент
Независимо отпротокол, который вы решите использовать, ваше клиентское программное обеспечение должно будет так или иначе обрабатывать сетевые задержки.
Для простоты я предполагаю, что у вас есть функция, названная get_data()
, которая выбирает данные изсервер, используя один из методов, описанных выше.
Синхронный Ваш клиент позвонит get_data()
, обработает ответ и повторите.Вы привыкли к этому, вот как обычно работает python.
Асинхронный Ваш клиент будет отправлять вызовы get_data()
одному работнику, а некоторые другие функции будутвыполняется при поступлении данных. По сути, позволяет вашей программе выполнять несколько вызовов API и обрабатывать их в порядке ответа, а не в порядке запроса.
Потоки Аналогдля синхронного поведения вы будете обрабатывать каждый запрос / ответ отдельным потоком ЦП, обрабатывая данные по мере их поступления. (со всеми предостережениями GIL Python *)
Примечание
Как ни странно, нити 2000+ не являются хорошим решением.