Тайм-аут запросов Selenium Grid, не выполнять. Многопроцессорность PythonPython

Программы на Python
Anonymous
Тайм-аут запросов Selenium Grid, не выполнять. Многопроцессорность Python

Сообщение Anonymous »

Я пишу программу веб-скрапинга на Python 3.12, используя Selenium и многопроцессорную обработку. Я настраиваю сетку селена с помощью докера и использую ее для параллельного запуска нескольких экземпляров селена. Однако любые запросы, сделанные к сетке, не выполняются и истекают через 5 минут. Даже если я упрощу свою функцию, чтобы просто получить исходный код страницы, она все равно не выполнится. У меня есть «запросчик», встроенный в класс. Вот базовая функция, которую я пытаюсь запустить (после того, как я удалил все вычисления, которые необходимо выполнить для HTML).

Код: Выделить всё

def get_discounts(self) -> list:
discounts = []

driveroptions = webdriver.ChromeOptions()
driveroptions.add_argument('--headless')
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444', options=driveroptions,      keep_alive=False)
driver.get(self.current_url)
html = driver.page_source()
driver.quit()
return discounts
также для справки, вот мой файл для создания докеров:

Код: Выделить всё

version: "3"
services:
chrome:
image: selenium/node-chrome:4.21.0-20240517
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_MAX_SESSIONS=8

selenium-hub:
image: selenium/hub:4.21.0-20240517
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
Я пробовал запустить это без головы и даже ограничить количество SE_NODE_MAX_SESSIONS до нескольких (3 или 4), но это все равно не работает. Я запускаю все это на ноутбуке Dell с 16 ГБ оперативной памяти, и запуск виртуальной машины для докера съедает часть этого. Как только я действительно запускаю сетку, она приближается к максимальному использованию моей оперативной памяти (доходит до 14,8 ГБ). До сих пор понятия не имею, почему это не сработает.
Кроме того, запуск этой функции вне сетки с использованием только селена работает нормально.

Подробнее здесь: https://stackoverflow.com/questions/785 ... processing

Вернуться в «Python»