improved browser ownership locking

This commit is contained in:
Noah Levitt 2014-01-27 19:24:28 -08:00
parent ae2c3668a9
commit e9f6408881

View file

@ -13,8 +13,7 @@ class Umbra:
def __init__(self, websocket_url, amqp_url): def __init__(self, websocket_url, amqp_url):
self.cmd_id = 0 self.cmd_id = 0
self.producer = None self.producer = None
self.browser_available = threading.Event() self.browser_lock = threading.Lock()
self.browser_available.set()
self.amqp_url = amqp_url self.amqp_url = amqp_url
self.producer_lock = threading.Lock() self.producer_lock = threading.Lock()
self.websocket_url = websocket_url self.websocket_url = websocket_url
@ -69,20 +68,14 @@ class Umbra:
url = body['url'] url = body['url']
# claim browser with self.browser_lock:
self.browser_available.wait() self.send_command(method="Network.enable")
self.browser_available.clear() self.send_command(method="Runtime.evaluate", params={"expression":"document.location = '%s';" % url})
self.send_command(method="Network.enable") # XXX more logic goes here
self.send_command(method="Runtime.evaluate", params={"expression":"document.location = '%s';" % url}) time.sleep(10)
# XXX more logic goes here message.ack()
time.sleep(10)
# release browser
self.browser_available.set()
message.ack()
class Chrome(): class Chrome():
logger = logging.getLogger('umbra.Chrome') logger = logging.getLogger('umbra.Chrome')