From 956e60054c18f10ce5439a55eaff33c46de68afe Mon Sep 17 00:00:00 2001 From: carrionc Date: Wed, 30 May 2018 00:40:37 -0400 Subject: [PATCH] Multiple chromium tab fix Within the render function, the page is rendered through the _async_render function. This function will try to render content by first creating a page, and currently will only close said page if the content is generated. However, if at any point there's a timeout beforehand, the current page isn't closed, and instead _async_render will be called again [as per the # assigned to retries in render()] and end up leaving behind an unused page. This change will enable render to close the "failed" attempt BEFORE opening a new page to try again, and should fix the issue of massive cpu buildup with multiple chromium instances. Sorry if this is messy, it's my first time using git to make a change. --- requests_html.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requests_html.py b/requests_html.py index ea8f3bd..cd5f01f 100644 --- a/requests_html.py +++ b/requests_html.py @@ -567,6 +567,8 @@ class HTML(BaseParser): page = None return content, result, page except TimeoutError: + await page.close() + page = None return None self.session.browser # Automatycally create a event loop and browser