Требуется опытный программист!
Есть скрипт, который используя Selenium заходит на сайт ищет там ключевое слово, собирает заголовки ответа, и аналистику, время загрузки узлов, ожидание ответа и т.д (как в файрбаг).
В случае ошибок делает скрин и сохраняет HAR-файл.
Если запускается 1 экземпляр в 4 -5 секунд, все работает нормально. Проблемы начинаются когда одновременно запускается несколько задач. (например 30 задач в течении 1-й минуты).
Скрипт начинает работать не стабильно. Данные в БД по некоторым таскам сохраняются частично или не сохраняются вовсе.
Наиболее распространенные проблемы которые видел в логах:
1. ProtocolException("Error in HTTP connection: Http2ZombieException('Connection or stream already dead: 1682387806.5554209, False')")
2. r, w_, e_ = select.select([self.socket], [], [], poll_interval) ValueError: filedescriptor out of range in select()
Что нужно сделать:
1. Исправить проблемы с одновременным запуском, что бы корректно работало.
2. Оптимизировать код. Увеличить производительность. Минимум в минуту должно отрабатывать 60 тасков, желательно больше.
3. Избавиться от лишнего request с помощью которого собираются заголовки. Сделать это через селениум.
4. Разобраться почему некоторые процессы хром не закрываются и продолжают висеть в процессах.
Скрипт состоит из двух частей.
1. Менеджер - который запускает задачи по расписанию.
2. Исполняемый скрипт.
Все задачи запускаются в отдельном потоке.
Технологии: Python 3.10, Mysql, Selenium