У меня есть процесс сканирования, который запускает селен в пользовательском классе, который выглядит следующим образом:
class BrowserInterface:
def __init__(self, base_url, proxy_settings):
self.base_url = base_url
self.display = Display(visible=0, size=(1024, 768))
self.display.start()
proxy_argument = '--proxy-server={0}'.format(PROXY_URL.format(
proxy_settings.get('proxy_host'),
proxy_settings.get('proxy_port')
))
logger.debug(proxy_argument)
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument(proxy_argument)
selenium_chrome_driver_path = os.path.join(settings.DEFAULT_DRIVER_PATH,
settings.CHROME_DRIVERS[settings.CURRENT_OS])
self.driver = webdriver.Chrome(executable_path=selenium_chrome_driver_path, chrome_options=options)
def visit(self, url):
url = urljoin(self.base_url, url)
self.driver.get(url)
def body(self):
soup = BeautifulSoup(self.driver.page_source)
return soup.find("body").text
def quit(self):
self.driver.quit()
self.display.stop()
Этот класс BrowserInterface инициализируется в очереди пакета, и в конце вызывается метод quit ().партии.Нет проблем с запуском chrome и получением данных.Проблема в том, что в конце каждого задания, когда вызывается метод quit (), chrome переходит в режим зомби.Когда следующий BrowserInterface инициализируется, он запускает новый экземпляр Chrome.Из-за этого на коробке заканчивается память.Я также попытался запустить команду kill для процесса chrome, но он продолжает работать.Любое направление будет с благодарностью, так как я собираюсь вырваться из-за этого.
Работа в Ubuntu 18.04, Google Chrome 70.0.3538.110, ChromeDriver 2.44, Python3.6.6
Спасибо зазаранее!