С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 03.11.2016
Сообщений: 9

Как ускорить отправку GET запроса

26.12.2019, 19:40. Показов 9404. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.12.2019, 19:40
Ответы с готовыми решениями:

Как ускорить отправку запросов ?
Требуется отправлять запросы на сервер, причём делать это как можно быстрее, и не дожидаясь ответа от сервера. Как можно это...

Как сделать отправку POST запроса ?
Я совсем новичок в С++. Объясните пожалуйста, как сделать отправку POST запроса на сервер (допустим http://mysitepost.ru), и вывести на...

Как реализовать отправку запроса с определенного ip адреса?
Добрый день, Подскажите, как реализовать такую штуку. Есть сайт, нужно, чтобы SOAP запрос уходил либо с определенного IP адреса,...

10
фрилансер
 Аватар для Алексей1153
6446 / 5641 / 1128
Регистрация: 11.10.2019
Сообщений: 15,007
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
фрилансер
 Аватар для Алексей1153
6446 / 5641 / 1128
Регистрация: 11.10.2019
Сообщений: 15,007
26.12.2019, 22:16
4elove4ko,что-то мне подсказывает, что реально задержка вовсе не в программе (пропарсить, найти по ключу - это всё очень быстро), а в долгом ответе на GET от сервера (и это скорее всего именно так). Можно отправлять запросы не дожидаясь ответа, а ответы принимать асинхронно.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
27.12.2019, 09:21
Цитата Сообщение от 4elove4ko Посмотреть сообщение
3) get запросы отправляю через сессию(не могу оценить на сколько быстрее это происходит чем без сессии)
На каждую установку tcp-соединения тратится примерно 100-200 мс. Апгрейд протокола до websockets - ещё 200-400 мс.

Меня смущает наличие слов websocket и get-запроса в одной фразе. Вы ничего не путаете? Может, вы просто дёргаете api сайта через http(s)?

Добавлено через 1 минуту
Кажется распутал: у вас два соединения.

Добавлено через 6 минут
Могу предложить такую архитектуру программы:

1) воркеры для обработки входящих сообщений от сервера
2) главный поток, который читает данные из websocket'а и кладёт распарсенные сообщения (без обработки! Только выделяет их) в очередь для дальнейшей обработки их воркерами.
3) воркеры для ответа. В каждом открыто по https-соединению с сервером. Читают из очереди данные и немедленно отправляют их на сервер. Можно ещё вызвать s.flush() для гарантированной отправки.

Структура потока данных:
websocket -> очередь1 -> воркеры с бизнес-логикой -> очередь2 -> воркеры с сетью -> сервер

Добавлено через 1 минуту
Цитата Сообщение от 4elove4ko Посмотреть сообщение
, сначала вроде как по домену ищется IP и уже после этого отправляется запрос на IP(не уверен но почему-то у меня такое понимание было) и я вот думал что я же могу вбить IP вручную(тогда сократиться время на поиск(хотя возможно открытая сессия это и делает?)),
Время на это тратится один раз. Если сессии использовать, то соединение будет переиспользоваться и этих задержек больше не будет.
3
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 6
28.06.2021, 11:48
На каждую установку tcp-соединения тратится примерно 100-200 мс. Апгрейд протокола до websockets - ещё 200-400 мс.

Меня смущает наличие слов websocket и get-запроса в одной фразе. Вы ничего не путаете? Может, вы просто дёргаете api сайта через http(s)?

Добавлено через 1 минуту
Кажется распутал: у вас два соединения.

Добавлено через 6 минут
Могу предложить такую архитектуру программы:

1) воркеры для обработки входящих сообщений от сервера
2) главный поток, который читает данные из websocket'а и кладёт распарсенные сообщения (без обработки! Только выделяет их) в очередь для дальнейшей обработки их воркерами.
3) воркеры для ответа. В каждом открыто по https-соединению с сервером. Читают из очереди данные и немедленно отправляют их на сервер. Можно ещё вызвать s.flush() для гарантированной отправки.

Структура потока данных:
websocket -> очередь1 -> воркеры с бизнес-логикой -> очередь2 -> воркеры с сетью -> сервер
Как можно с тобой связаться? У меня подобная проблема, но реализовать твой совет самостоятельно пока не смогу
0
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
28.06.2021, 12:01
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Структура потока данных:
websocket -> очередь1 -> воркеры с бизнес-логикой -> очередь2 -> воркеры с сетью -> сервер
предлагаю проапгрейдить предложение,- не очередь а асинхронная обработка, возможно с процессами-демонами-
те один запрос одна программа (имеется ввиду, заранее запущеная и готовая к обработке то есть так:
сокет->отдать демонам (данные передавать по shmop)->демоны->получить данные и отправить их(тк скорее всего с разных портов будет низя)
0
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 6
28.06.2021, 12:06
Цитата Сообщение от user-ganz Посмотреть сообщение
предлагаю проапгрейдить предложение,- не очередь а асинхронная обработка, возможно с процессами-демонами-
те один запрос одна программа (имеется ввиду, заранее запущеная и готовая к обработке то есть так:
сокет->отдать демонам (данные передавать по shmop)->демоны->получить данные и отправить их(тк скорее всего с разных портов будет низя)
Мне нужен человек, который в силах это все реализовать, естественно не бесплатно)
Если тут есть желающие поучаствовать - велкам, пишите на почту nikita.chaika.d@gmail.com.
Если есть ребята из Москвы - вообще идеально
0
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
28.06.2021, 12:12
Цитата Сообщение от nekto_chayka Посмотреть сообщение
естественно не бесплатно)
предлагаю создать тему во "фриланс" - отбоя от желающих не будет (главное не пугай их сразу страшными словами DDDDD)
сам, увы, не могу,- занят, так что нет гарантии что доведу проект до конца.
но пара часов есть, если нет ни каких тайн то кидай код в ветку пока есть время гляну, естественно бесплатно и без смс
0
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 6
28.06.2021, 12:18
Цитата Сообщение от user-ganz Посмотреть сообщение
предлагаю создать тему во "фриланс" - отбоя от желающих не будет (главное не пугай их сразу страшными словами DDDDD)
сам, увы, не могу,- занят, так что нет гарантии что доведу проект до конца.
но пара часов есть, если нет ни каких тайн то кидай код в ветку пока есть время гляну, естественно бесплатно и без смс
Код могу скинуть, но толку мало будет, сейчас пользуюсь библиотекой CCXT Pro и та часть кода, которая могла бы что-то сказать о процессе находится внутри либы, сам в сокетах пока не разбирался. Возможно буду изучать подробно тему сокетов, писать свою либу, чтобы в ней реализовать задуманный план. Но проще и, что немаловажно, быстрее было бы оплатить спеца, который уже все это знает и умеет
0
Костыли любой сложности
201 / 146 / 36
Регистрация: 27.10.2019
Сообщений: 843
28.06.2021, 12:26
Цитата Сообщение от nekto_chayka Посмотреть сообщение
CCXT Pro
гугл сказал что это яваскрипт. а он по определению медленный, можешь скинуть сервера куда отправляются запросы, то есть использование явы обязательно или нет?
Цитата Сообщение от nekto_chayka Посмотреть сообщение
писать свою либу
, здесь уже нужны сишники (C)
Цитата Сообщение от nekto_chayka Посмотреть сообщение
оплатить спеца
знающего ccxt и python и С? шансы близки к нулю, либо им платить надо столько, что проще самому выучить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2021, 12:26
Помогаю со студенческими работами здесь

Каким образом ускорить отправку запросов Node js?
Суть такова, через вебсокет соединение обрабатываю полученный JSON, из него беру информацию и отправляю post запрос. Я отправляю несколько...

Как сделать отправку SQL запроса и вывод результата при открытии страницы?
Есть код, который работает только при нажатии кнопки submit, как сделать что бы результат выводился сразу при открытии страницы, без...

Как ускорить время выполнения запроса
Здравствуйте, как можно ускорить данный запрос: SELECT id, surname, CASE WHEN ball < 60 THEN 'Низкий' WHEN ball BETWEEN...

Как ускорить выполнение запроса Firebird
Здравствуйте, использую БД firebird 2.5, Delphi xe2, fibplus + ehlib Таблица SALE ID(integer) - счетчик , TID(integer) - ID товара, ...

Кто инициирует отправку ARP запроса?
Модуль какого протокола сетевого стека рабочей станции инициирует отправку ARP-запроса? Это происходит на канальном уровне, т.е., например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru