Python Selenium未关闭docker内部的浏览器进程
我有一个docker容器:Python Selenium未关闭docker内部的浏览器进程,python,selenium,docker,google-chrome,docker-compose,Python,Selenium,Docker,Google Chrome,Docker Compose,我有一个docker容器: ... web: build: context: . dockerfile: Dockerfile command: python /code/manage.py migrate --noinput command: python /code/manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports:
...
web:
build:
context: .
dockerfile: Dockerfile
command: python /code/manage.py migrate --noinput
command: python /code/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 80:8000
environment:
- SECRET_KEY=changemeinprod
depends_on:
- db
- redis
...
Selenium scrape在此容器中运行(docker中的django项目):
尽管我用命令
driver.quit()
关闭了driver
,chrome进程仍然在运行。此脚本的每次执行都会保留chrome进程,并使下一次执行变慢,因为有多个chrome进程正在运行。如何在docker内部实现关闭chrome?即使我需要在django项目运行的地方重新启动容器,您能告诉我如何使用python脚本(docker容器使用python脚本重新启动本身)。尝试使用driver.close()
而不是driver.quit()
。另外,尝试将超时添加到您的呼叫中。。。可能是链接下载时间太长 @LinPy是的,当然
...
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(executable_path=chrome_driver_path,
options=chrome_options)
driver.get(link)
...
...
pid = driver.service.process.pid
driver.quit()
try:
os.kill(int(pid), signal.SIGTERM)
print("Killed chrome using process")
except ProcessLookupError as e:
pass