我正在运行一个Django服务,它启动了一个chromedriver for selenium并且在网站上搜索数据.Django服务由另一个Java服务通过HTTP调用.
这是代码:
views.py
path_to_chromedriver = '/path/to/chromedriver' browser = webdriver.Chrome(executable_path = path_to_chromedriver) try: response = get_data(browser) except Exception as e: print str(e) finally: browser.close() browser.quit()
scraper.py
get_data(browser) try: . . . for i in range(1,6): try: . . . return "success data" except NoSuchElementException: browser.back() raise Exception("No results found") except Exception as e: print str(e) raise
问题是,在java服务完成所有调用并且整个过程完成之后,RAM中孤立的25到50个chrome进程占用超过1 GB.我在这里做错了吗?
这是一个老问题.虽然很脏,但对我来说有用的是在退出之前增加睡眠:
time.sleep(5) browser.quit()