簡體   English   中英

Selenium 沒有關閉 docker 中的瀏覽器進程

[英]Selenium not closing browser processes inside 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:
      - 80:8000
     environment:
      - SECRET_KEY=changemeinprod
     depends_on:
      - db
      - redis
     ...

Selenium scrape 在這個容器中運行(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.quit()關閉driver ,chrome 進程仍在運行。 由於多個 chrome 進程正在運行,此腳本的每次執行都會保持 chrome 進程並使下一次執行速度變慢。 如何在 docker 中實現關閉鍍鉻? 即使我需要重新啟動運行 django 項目的容器,您能否告訴我如何在 python 腳本中執行此操作(docker 容器使用 python 腳本重新啟動)。

我建議您使用Zalenium。 它是一個Selenium Grid包裝器,有助於自動縮放/縮放。 這將使您的生活更加輕松。

https://opensource.zalando.com/zalenium/

嘗試使用driver.close()而不是driver.quit() 另外,嘗試在您的呼叫中添加超時...這可能只是鏈接下載時間過長。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM