|
0 / 0 / 0
Регистрация: 03.11.2016
Сообщений: 9
|
|
Как ускорить отправку GET запроса26.12.2019, 19:40. Показов 9495. Ответов 10
Поомогите найти решение. Подключаюсь через websocket к одной бирже, приходит большой поток информации,примерно 30-40 сообщений в секунду,каждое сообщение мне нужно сравнить с моими данными, если есть нужное, отправить GET запрос. Это нужно сделать максимально быстро, ускорил на сколько смог:
1) мои данный хранятся в словаре и запрашиваю их по ключу, вместо поиска в цикле(это оказалось примерно в 10 раз быстрее) 2) сообщение приходит типа str, но в формате json, нужные мне данные вырезаю что бы не созавать Json объект(это приблизительно в 15 раз быстрее) 3) get запросы отправляю через сессию(не могу оценить на сколько быстрее это происходит чем без сессии) 4) арендовал сервак в Торронто от туда самый маленький ping, тестировал через сервисы в интернете(запрос отправляется в 2 раза быстрее). И это все мне ни как не помогло, другие боты все равно опережают. Среднее время анализа сообщения и сбор данных перед отправкой 0.0002 сек(до оптимизации было около 0.02), а время отправки запроса и получения ответа от 0.2 до 0.3 (но мне важно лишь получение ответа сервером, посчитать не знаю как, плюс оно еще всегда разное). Есть мысли реализовать это все в cython, либо вообще написать это на Си(пока не знаю как). Но перед тем как вновь тыкать пальцем в небо,решил поинтересоваться у людей которые возможно смогут направить меня на путь истинный. P.S Скорее всего я оптимизировал не то что надо, потому-что понятно что основное время тратится именно на отправку запроса, пытался использовать библиотеки типа faster-than-requests,asincio,aiohttp,но ни что не помогло, возможно не умею гуглить, в общем буду рад любому совету.
0
|
|
| 26.12.2019, 19:40 | |
|
Ответы с готовыми решениями:
10
Как ускорить отправку запросов ?
Как реализовать отправку запроса с определенного ip адреса? |
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
|
|
| 26.12.2019, 20:13 | |
|
4elove4ko, сколько соединений позволяет иметь сервер?
вряд ли тут дело в языке. Скорее всего код выполняется быстро, а задержки проявляются при передаче по сети. Можно попробовать организовать конвейер - с определённым интервалом запускать соединения, результаты тоже будут приходить примерно с таким же интервалом. Затем можно будет попробовать распараллелить на потоки Добавлено через 2 минуты ага, я невнимательно прочитал. Оказывается, сначала приходят запросы. Тогда остаётся подключать многопоточную обработку
0
|
|
|
0 / 0 / 0
Регистрация: 03.11.2016
Сообщений: 9
|
|
| 26.12.2019, 21:08 [ТС] | |
|
т е получается каждое сообщение которое приходит по веб сокету, проверяется по очереди? И из-за этого грубо говоря накапливается стэк сообщений, так?
Добавлено через 11 минут Но блин, я даже не знаю если в момент придет 10 сообщений программе понадобится 0.001 сек что-бы их обработать, конечно все равно попробую. Но я больше думал о том что когда создается запрос на сервер, сначала вроде как по домену ищется IP и уже после этого отправляется запрос на IP(не уверен но почему-то у меня такое понимание было) и я вот думал что я же могу вбить IP вручную(тогда сократиться время на поиск(хотя возможно открытая сессия это и делает?)), но как это сделать и что из этого получится не понимаю, а возможно уже бред в голову приходит. Сижу уже 4 суток над этим вопросом голова взрывается ![]() ![]()
0
|
|
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
|
|
| 26.12.2019, 22:16 | |
|
4elove4ko,что-то мне подсказывает, что реально задержка вовсе не в программе (пропарсить, найти по ключу - это всё очень быстро), а в долгом ответе на GET от сервера (и это скорее всего именно так). Можно отправлять запросы не дожидаясь ответа, а ответы принимать асинхронно.
1
|
|
|
Просто Лис
|
|||
| 27.12.2019, 09:21 | |||
|
Меня смущает наличие слов websocket и get-запроса в одной фразе. Вы ничего не путаете? Может, вы просто дёргаете api сайта через http(s)? Добавлено через 1 минуту Кажется распутал: у вас два соединения. Добавлено через 6 минут Могу предложить такую архитектуру программы: 1) воркеры для обработки входящих сообщений от сервера 2) главный поток, который читает данные из websocket'а и кладёт распарсенные сообщения (без обработки! Только выделяет их) в очередь для дальнейшей обработки их воркерами. 3) воркеры для ответа. В каждом открыто по https-соединению с сервером. Читают из очереди данные и немедленно отправляют их на сервер. Можно ещё вызвать s.flush() для гарантированной отправки. Структура потока данных: websocket -> очередь1 -> воркеры с бизнес-логикой -> очередь2 -> воркеры с сетью -> сервер Добавлено через 1 минуту
3
|
|||
|
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 6
|
||
| 28.06.2021, 11:48 | ||
0
|
||
|
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
|
||
| 28.06.2021, 12:01 | ||
|
те один запрос одна программа (имеется ввиду, заранее запущеная и готовая к обработке то есть так: сокет->отдать демонам (данные передавать по shmop)->демоны->получить данные и отправить их(тк скорее всего с разных портов будет низя)
0
|
||
|
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 6
|
||
| 28.06.2021, 12:06 | ||
|
Если тут есть желающие поучаствовать - велкам, пишите на почту nikita.chaika.d@gmail.com. Если есть ребята из Москвы - вообще идеально
0
|
||
|
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
|
||
| 28.06.2021, 12:12 | ||
|
сам, увы, не могу,- занят, так что нет гарантии что доведу проект до конца. но пара часов есть, если нет ни каких тайн то кидай код в ветку пока есть время гляну, естественно бесплатно и без смс
0
|
||
|
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 6
|
||
| 28.06.2021, 12:18 | ||
|
0
|
||
|
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
|
||||
| 28.06.2021, 12:26 | ||||
|
0
|
||||
| 28.06.2021, 12:26 | |
|
Помогаю со студенческими работами здесь
11
Каким образом ускорить отправку запросов Node js? Как сделать отправку SQL запроса и вывод результата при открытии страницы? Как ускорить время выполнения запроса
Кто инициирует отправку ARP запроса? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|