fix(chv): 数据盘挂载升格为 oneshot 服务,浏览器启动时重解析 profile
This commit is contained in:
1 parent
c7ffb1fe6f
commit
5dc75128f8
5 files changed
+145
-12
No files matched your search
@@ -254,6 +254,7 @@ class BrowserAgent:
|
||||
profile_dir=None, cdp_port=None, full_browsers_dir=None):
|
||||
self._factory = playwright_factory or _load_playwright
|
||||
self._shots_dir = shots_dir
|
||||
self._profile_explicit = bool(profile_dir)
|
||||
if profile_dir:
|
||||
self._profile_dir = profile_dir
|
||||
self._profile_on_data_disk = profile_dir.startswith(
|
||||
@@ -261,6 +262,7 @@ class BrowserAgent:
|
||||
else:
|
||||
self._profile_dir, self._profile_on_data_disk = \
|
||||
resolve_profile_dir()
|
||||
self._full_browsers_explicit = bool(full_browsers_dir)
|
||||
self._full_browsers_dir = (
|
||||
full_browsers_dir or resolve_full_browsers_dir(
|
||||
self._profile_on_data_disk))
|
||||
@@ -302,6 +304,25 @@ class BrowserAgent:
|
||||
if self._context is not None and engine == self._engine:
|
||||
return True, ""
|
||||
self._close_context()
|
||||
if not self._profile_explicit:
|
||||
# 迟挂载自愈:首次启动(或旧上下文已关)时按当前挂载状态
|
||||
# 重解析 profile——进程启动时数据盘若还没挂上,__init__
|
||||
# 记的是回落路径;等挂盘完成后再 open 时应拿到数据盘
|
||||
# profile,而不是把回落态锁死到服务重启。已跑起来的
|
||||
# 上下文不受影响(上面已提前返回)。
|
||||
self._profile_dir, self._profile_on_data_disk = \
|
||||
resolve_profile_dir()
|
||||
if not self._full_browsers_explicit:
|
||||
self._full_browsers_dir = resolve_full_browsers_dir(
|
||||
self._profile_on_data_disk)
|
||||
try:
|
||||
# profile 目录自己建好并收紧到 0700:不依赖
|
||||
# chv-data-mount 的时序(它在 cloud-final 才跑,
|
||||
# 可能晚于浏览器首次启动),登录态目录绝不留 0755。
|
||||
os.makedirs(self._profile_dir, exist_ok=True)
|
||||
os.chmod(self._profile_dir, 0o700)
|
||||
except OSError:
|
||||
pass # 只读/无权限时由 Playwright 启动报错,status 明说
|
||||
try:
|
||||
if self._pw is None:
|
||||
self._pw = self._factory()
|
||||
|
||||
Reference in new issue
Block a user