我有一个码头集装箱:
...
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 废料在此容器中运行(docker 中的 django 项目):
...
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
尽管我driver
用 command关闭driver.quit()
,chrome 进程仍在运行。由于多个 chrome 进程正在运行,此脚本的每次执行都会保持 chrome 进程并使下一次执行速度变慢。如何在 docker 中实现关闭镀铬?即使我需要重新启动运行 django 项目的容器,您能否告诉我如何在 python 脚本中执行此操作(docker 容器使用 python 脚本重新启动)。
尝试使用driver.close()
代替driver.quit()
. 另外,尝试在您的呼叫中添加超时...这可能只是链接下载时间过长。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句