WebDriverException: Сообщение: неизвестная ошибка: Chrome не удалось запустить: аварийно завершены. Разрывается с uWSGI, Python, Flask, Selenium

#python #selenium #google-chrome #selenium-chromedriver #uwsgi

#python #селен #google-chrome #selenium-chromedriver #uwsgi

Вопрос:

Я запускаю приложение Flask с uWSGI на сервере Ubuntu и пытаюсь использовать selenium с chromedriver. Это ошибка, которую я вижу при запуске sudo systemctl status myapp

     selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
    (unknown error: DevToolsActivePort file doesn't exist)
    (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  

Похоже, это не проблема с моей версией google-chrome / chromedriver, поскольку я могу вручную создать тот же скрипт в оболочке Python3, и Selenium работает отлично без каких-либо ошибок. Это наводит меня на мысль, что это связано с моей настройкой uWSGI / сокета.

myapp.ini:

 [uwsgi]
module = myapp:app

master = true
processes = 5

socket = myapp.sock
chmod-socket = 660
vacuum = true

die-on-term = true
  

/etc/systemd/system/myapp.service:

 [Unit]
Description=uWSGI myapp
After=network.target

[Service]
User=hello
Group=www-data
WorkingDirectory=/home/hello/myapp/backend
Environment="PATH=/home/hello/myapp/venv/bin:/usr/bin:/bin"
ExecStart=/home/hello/myapp/backend/venv/bin/uwsgi --ini myapp.ini

[Install]
WantedBy=multi-user.target
  

версия chromedriver: 86.0.4240.22

версия google-chrome 86.0.4240.75

selenium_scraper.py:

 def get_selenium_data(query):
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from webdriver_manager.chrome import ChromeDriverManager

    # Prepare headless chrome driver
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-extensions")
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--disable-infobars")
    chrome_options.add_argument("--start-maximized")
    chrome_options.add_argument("--disable-dev-shm-usage")
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
    driver.set_window_size(500, 951)
    driver.get(query)
  

Как вы можете видеть, я использовал —no-sandbox, а также все другие флаги, и он работает в интерпретаторе python3 в Ubuntu. Однако, когда я пытаюсь перезапустить свой сервер / сокет uWSGI, он выдает ошибку Chrome не удалось запустить. Любая помощь будет с благодарностью!!

Комментарии:

1. Привет, вы получили ответ на это? Спасибо!

2. @Halmon Вы решили это? У меня такая же проблема, и я был бы рад, если бы вы могли предоставить обновление.