Прокси сервер для ботов


Добры день!
Написал бота используя ваш код, многое поменял, практически все. Работает на 15 парах  последовательно. Это долго около 360 секунд на обход всех пар. Хочу паралельно запустить ботов (GIL не дает распределить на все ядра - пашет на одном). Поэтому приходится запускать суббпроцессы со своей оболочкой. Но тут проблема - так как идет запрос паралельно и боты начинают конфликовать. Пришел к решению, что нужен прокси сервер между апи сервисом эксмо и ботами. Боты будут обращаться на прокси сервер - там будет стоять очередь и отдавать будет своему боту. Очередь тоже нашел как сделать https://habr.com/post/236221/
RabbitMQ  Помогите прикрутить просто прокси сервер на питоне и RabbitMQ так что бы был локальны адрес куда обращались боты а прокси варил очередь и общался бы с эксмо апи. Заранее Вам спасибо! Все попытки распаралелить на ядра не дали результата. Все равно скидывает на одно ядро. Процессор 6 ядер 12 потоков - а все равно аботает один.  

 

14.10.2018 19:33:53

Добрый день,

Как то немного в кучу всё, Rabbit MQ, ядра, прокси.

Смотрите, если я правильно помню, GIL влияет на интерпретатор python, не позволяя ему держать активным более одного потока. Так что если вы в рамках кода что-то форкаете, параллелите и т.п., это не сильно влияет на производительность, т.к. все эти вещи обслуживает уже запущенный экземпляр питона. Если вы запустите одновременно 15 интерпретаторов python, каждому дадите свой файл, то можете получить реальную хорошую производительность.

Так же, возможно стоит разнести и скриптовые файлы, т.к. каждый созданный pyc - байт-код, тоже проверяется (или раньше проверялся) и на него тоже стояли ограничения GIL - один pyc - один поток. Но сейчас это может быть и не актуальным.

Насчет очереди - Rabbit MQ это наверное правильное решение, но нужно читать документацию и писать код, думаю, это не формат сообщения.

Простым решением может быть такое - все скрипты не отправляют запросы на биржу, не считают nonce, а скидывают запросы в локальную БД или даже в папку.

Отдельный скрипт забирает сообщения, делает запрос к бирже, и тоже пишет в БД или в другую папку ответы. При этом в самом скрипте взаимодейтсвия должно быть ограничение не делать более n запросов в секунду, а скрипты алгоритмические должны быть перестроены на получение информации из локального хранилища. Думаю, так задачу можно решить быстро и без разбирательств со сторонним софтом.

ПроголосоватьПроголосовать
0 0
20.10.2018 07:19:44

Вообщем я разобрался.

Я купил процессор с 6 ядрами (12 потоков) и решил его загрузить полностью. Действительно GIL реально не дает паралеить процессы - только отдельный запуск интерпретатора. Ок. запускаем отдельно интерпретаторы. Я нашел proxy Https на питоне и запустил его. Теперь все боты шлют на локальный прокси сервер - а он на екмо. Теперь по Rabbit MQ -по статье написал локальный 2 сервер. Теперь из прокси запрос отправляется на локальный сервер раббита - там ставится в очередь и читается список обратно в локальный прокси - который отправляет очередные запросы на ексмо. Очередь на приемную информацию пока не делал, так как очередь с подверждением. Получается 2 локальных сервера. Но я вижу все равно возникают ошибки вида :

 40009: The nonce parameter is less or equal than what was used before "1540659401412"

видимо надо ставить очередь и на приемные пакеты.

5 интерпретаторов 20 пар - работают паралельно. Среднее время обработки 1 пары 90 секунд. Но уменя много графики и матеатики (включая нейронную сеть опознования спада). 

Информация для размышления:

https://github.com/guysoft/proxy2/tree/python3 

https://habr.com/post/236221/

 

 

ПроголосоватьПроголосовать
0 0
27.10.2018 17:00:42

У меня еще вопрос как посмотреть выходно трафик - что он именно защифрован при обращении к https?!

ПроголосоватьПроголосовать
0 0
28.10.2018 10:26:23
Пожалуйста, авторизуйтесь, что бы ответить на вопрос