Как ускорить работу бота ?
-
Здравствуйте, уважаемые. Я новичок в программировании. Сделал бота на питоне + селениум для мониторинга и покупки онлайн. Но мой бот редко поспевает купить первым.
В какую сторону смотреть, чтобы ускорить работу бота ? Api в этом онлайн магазине нет. Подкиньте идей. -
палочками, его, палочками.
-
Сделай бота на с++ :)
-
Ассемблер.
-
Напрямую надо эмулировать запросы браузера, если скорость критична, веб-интерфейс может спокойно подтормаживать на доли секунды.
-
@dimok имеется ввиду get и post ? Этот пунктик я записал в задачи, пытаюсь разобраться в этом.
-
разместить на vds сервере, который находится хотя бы в той же стране, что и серваки биржи.
-
Оптимизация размещения сервера должна идти в последнюю очередь, если не закрывать установленное соединение (а вы не хотите закрывать соединения, если вам важна скорость), то разницы практически нет.
-
Посидел 30 часов без сна, написал бота без веб интерфейса (post, get, ну вы понимаете). В какую еще сторону посмотреть в рамках python для ускорения ? Остаётся только сервер поближе ?
-
сделай замеры сколько он у тебя тратит время и потом дебаж
-
и как бы Selenium для тестов , я брал для бота редис и мониторинг идет из него на фронт
-
Я же написал, что отказался от селениума и написал бота на питоне через requests. Спасибо за советы, гляну что за редис)
-
глянь еше websocket
-
@zevoice У вас преждевременная оптимизация. Сама обработка полученных данных занимает доли секунды и вряд ли является узким местом. Проблемы скорее всего в скорости получения данных - нужно переиспользовать сетевые сокеты, делать запросы напрямую, а не через веб-интерфейс, поставить сервер поближе.
Узкое место почти всегда - сетевой стек, вот его и оптимизируйте.
Вебсокеты, редис - это всё здорово, но опять же, покупать быстрее не поможет, вряд ли магазины предоставляют данные на вебсокетах или есть существенная задержка из-за работы с базой данных.
Ах да, на всякий случай, хотя это и очевидно - ботика надо запускать на VPS у провайдера, ни в коем случае не со своего домашнего компьютера, домашний интернет нынче неплохой, но у хостинг-провайдеров всё равно лучше.
-
Мой конкурент покупает одни и те же товары, иногда он первый, иногда я. Имеет ли смысл запустить несколько копий бота через прокси (и добавить аккаунтов магазина если потребуется) ?
-
Ну вообще первое что надо сделать - это по каждой покупке логировать время от момента срабатывания триггера до отправки REST запросов, или команд в Селениум, если бот работает на нем. И смотреть в среднем сколько это занимает милисекунд, и пробовать оптимизмровать. Может там действительно код можно улучшить.
-
@zevoice Прокси это сразу минус 0.2-0.4 секунды на установление SSL соединения, если важна скорость, то не вариант.
Технически это как работает: вы заранее открываете сокет, устанавливаете соединение, обмениваетесь сертификатами (0.2-0.3 секунд), дальше сокет остаётся открытым, вы в него шлёте запросы (меньше 0.1 секунды), получаете ответы.
Если будет прокси - то устанавливать соединение придётся на каждый запрос, разница колоссальная.
-
@dimok Кажется, что я всё понял, осталось допилить код. Спасибо за помощь.