Совместное использование сложного не сериализуемого и необрабатываемого объекта между несколькими процессами (работники uwsgi) - PullRequest
0 голосов
/ 06 ноября 2019

Возможные повторяющиеся вопросы, через которые я прошел, о которых говорит то же самое.

Постоянный объект Python в памяти для сервера nginx / uwsgi

Многопроцессорная доляНесериализуемые объекты между процессами

Совместное использование сложного объекта между процессами Python?

Объекты с общей памятью в многопроцессорной обработке

Обмен объектами класса Python между процессами, созданными с использованием модуля многопроцессорной обработки

У меня есть сценарий, в котором мне нужно совместно использовать объект веб-драйвера selenium между каждым запросом.

Почему?

Функциональность выполняется шаг за шагом при каждом запросе фляги, отправляемом на сервер. например, при первом запросе колбы создается объект веб-драйвера, который должен использоваться несколькими последовательными запросами колбы.

Теперь проблема заключается в том, был ли первый запрос колбы обработан рабочим с PID: 1, а второйодин обрабатывается работником с PID: 2 тогда этот работник не будет иметь представления о существовании экземпляра веб-драйвера, созданного первым процессом.

Я рассмотрел возможности обеспечения совместного использования данных между несколькими процессами, новсе они требуют, чтобы объект мог быть выбран или сериализуем (я думаю, что оба они одинаковы).

Selenium webdriver не может быть сериализован, и я прочитал где-то в документации, что только сериализуемые объекты могут совместно использоваться несколькими процессами (используя Manager, pipe или маринованный объект).

Скорее всего, мое исследование показывает, что невозможно совместно использовать webdriver между несколькими процессами.

Что я думаю, может быть частью решения?

  1. Каким-то маКе эти драйверы разделены между процессами (что кажется почти невозможным, но предложения приветствуются.)

  2. Вынудите wsgi использовать определенный идентификатор процесса для обработки запроса.

  3. Получение сеанса, локального хранилища и файлов cookie из драйвера при каждом запросе сохраняйте его с помощью Manager или pipe или pickle, добавляйте их в новый экземпляр драйвера в следующем запросе.

Любые другие предложения приветствуются. Я также с нетерпением жду реализации, если есть какая-то совершенно новая возможность для этой проблемы, о которой я не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...