mirror of
https://github.com/internetarchive/brozzler.git
synced 2025-02-24 00:29:53 -05:00
use temp dir as $HOME instead of just chromium user-data-dir, because sometimes we have been seeing chrome print this error message and hang "[1975:2001:0603/215855:ERROR:nss_util.cc(444)] Error initializing NSS with a persistent database (sql:/home/archiveit/.pki/nssdb): NSS error code: -8187"
This commit is contained in:
parent
e619e013b6
commit
bfb6cac25f
@ -81,8 +81,8 @@ class Browser:
|
|||||||
with self._lock:
|
with self._lock:
|
||||||
self.url = url
|
self.url = url
|
||||||
self.on_request = on_request
|
self.on_request = on_request
|
||||||
with tempfile.TemporaryDirectory() as user_data_dir:
|
with tempfile.TemporaryDirectory() as user_home_dir:
|
||||||
with Chrome(self.chrome_port, self.chrome_exe, self.chrome_wait, user_data_dir) as websocket_url:
|
with Chrome(self.chrome_port, self.chrome_exe, self.chrome_wait, user_home_dir) as websocket_url:
|
||||||
self.websock = websocket.WebSocketApp(websocket_url,
|
self.websock = websocket.WebSocketApp(websocket_url,
|
||||||
on_open=self._visit_page,
|
on_open=self._visit_page,
|
||||||
on_message=self._handle_message)
|
on_message=self._handle_message)
|
||||||
@ -186,23 +186,24 @@ class Browser:
|
|||||||
class Chrome:
|
class Chrome:
|
||||||
logger = logging.getLogger(__module__ + "." + __qualname__)
|
logger = logging.getLogger(__module__ + "." + __qualname__)
|
||||||
|
|
||||||
def __init__(self, port, executable, browser_wait, user_data_dir):
|
def __init__(self, port, executable, browser_wait, user_home_dir):
|
||||||
self.port = port
|
self.port = port
|
||||||
self.executable = executable
|
self.executable = executable
|
||||||
self.browser_wait = browser_wait
|
self.browser_wait = browser_wait
|
||||||
self.user_data_dir = user_data_dir
|
self.user_home_dir = user_home_dir
|
||||||
|
|
||||||
# returns websocket url to chrome window with about:blank loaded
|
# returns websocket url to chrome window with about:blank loaded
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
|
new_env = os.environ.copy()
|
||||||
|
new_env["HOME"] = self.user_home_dir
|
||||||
chrome_args = [self.executable,
|
chrome_args = [self.executable,
|
||||||
"--user-data-dir={}".format(self.user_data_dir),
|
|
||||||
"--remote-debugging-port={}".format(self.port),
|
"--remote-debugging-port={}".format(self.port),
|
||||||
"--disable-web-sockets", "--disable-cache",
|
"--disable-web-sockets", "--disable-cache",
|
||||||
"--window-size=1100,900", "--no-default-browser-check",
|
"--window-size=1100,900", "--no-default-browser-check",
|
||||||
"--disable-first-run-ui", "--no-first-run",
|
"--disable-first-run-ui", "--no-first-run",
|
||||||
"--homepage=about:blank", "about:blank"]
|
"--homepage=about:blank", "about:blank"]
|
||||||
self.logger.info("running {}".format(chrome_args))
|
self.logger.info("running {}".format(chrome_args))
|
||||||
self.chrome_process = subprocess.Popen(chrome_args, start_new_session=True)
|
self.chrome_process = subprocess.Popen(chrome_args, env=new_env, start_new_session=True)
|
||||||
self.logger.info("chrome running, pid {}".format(self.chrome_process.pid))
|
self.logger.info("chrome running, pid {}".format(self.chrome_process.pid))
|
||||||
start = time.time()
|
start = time.time()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user