#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 Вы решили это? У меня такая же проблема, и я был бы рад, если бы вы могли предоставить обновление.