Browse Source

Added connect method to browser model and browser cleanup

master
Raphael Roberts 7 years ago
parent
commit
e8fe97b642
  1. 5
      restscrape/models.py
  2. 4
      restscrape/scraping/browser.py
  3. 20
      restscrape/utils.py

5
restscrape/models.py

@ -48,9 +48,12 @@ class Browser(models.Model):
proxy = models.URLField(max_length=None)
use_adblock = models.BooleanField()
def connect(self):
return BrowserConnection(self.address)
def delete(self):
try:
browser_handle = BrowserConnection(self.address)
browser_handle = self.connect()
browser_handle.close()
except Exception:
pass

4
restscrape/scraping/browser.py

@ -26,6 +26,10 @@ class BrowserConnection:
self.address = self.browser_handle.wsEndpoint
@property
def tabs(self):
return run(self.browser_handle.pages())
def create_tab(self):
return Tab(self.browser_handle)

20
restscrape/utils.py

@ -4,8 +4,10 @@ from restscrape.scraping.browser import start_browser, BrowserConnection
def get_tab(proxy, use_adblock=True):
try:
matching_browser = Browser.objects.get(proxy=proxy, use_adblock=use_adblock)
browser_connection = BrowserConnection(address=matching_browser.address)
browser_connection = Browser.objects.get(
proxy=proxy, use_adblock=use_adblock
).connect()
except Browser.DoesNotExist:
browser_connection = start_browser(proxy=proxy, use_adblock=use_adblock)
created_browser = Browser(
@ -13,3 +15,17 @@ def get_tab(proxy, use_adblock=True):
)
created_browser.save()
return browser_connection.create_tab()
def cleanup_browsers(max_browsers=5):
alive = 0
for browser in Browser.objects.all():
if alive < max_browsers:
try:
browser.connect()
alive += 1
except Exception:
browser.delete()
else:
if len(browser.connect().tabs) == 1:
browser.delete()
Loading…
Cancel
Save