Skip to content

Commit 0563751

Browse files
committed
Update: [Server][Utils/TwitterScrapeBrowser] Chrome の起動オプションをチューニング
1 parent dd7f7f0 commit 0563751

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

server/app/utils/TwitterGraphQLAPI.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def __new__(cls, twitter_account: TwitterAccount) -> TwitterGraphQLAPI:
8585
# Twitter アカウントのモデル
8686
instance.twitter_account = twitter_account
8787

88-
# ZenDriver で自動操作されるヘッドレスブラウザのインスタンス
88+
# Zendriver で自動操作されるヘッドレスブラウザのインスタンス
8989
instance._browser = TwitterScrapeBrowser(twitter_account)
9090
# 一定期間後にヘッドレスブラウザをシャットダウンするタスク
9191
instance._shutdown_task = None

server/app/utils/TwitterScrapeBrowser.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
class BrowserBinaryNotFoundError(RuntimeError):
1313
"""
14-
Chrome / Brave の実行ファイルが検出できず、ZenDriver がブラウザを起動できない場合に送出される例外
14+
Chrome / Brave の実行ファイルが検出できず、Zendriver がブラウザを起動できない場合に送出される例外
1515
"""
1616

1717

@@ -31,7 +31,7 @@ def __init__(self, twitter_account: TwitterAccount) -> None:
3131

3232
self.twitter_account = twitter_account
3333

34-
# ZenDriver のブラウザインスタンス
34+
# Zendriver のブラウザインスタンス
3535
self._browser: Browser | None = None
3636
# 現在アクティブなタブ(ページ)インスタンス
3737
self._page: Tab | None = None
@@ -64,7 +64,7 @@ async def setup(self) -> None:
6464
# セットアップ処理の完了を把握するための Future を作成
6565
setup_complete_future = asyncio.get_running_loop().create_future()
6666

67-
# ZenDriver でヘッドレスブラウザを起動
67+
# Zendriver でヘッドレスブラウザを起動
6868
logging.info(f'{self.log_prefix} Starting browser...')
6969
try:
7070
self._browser = await Browser.create(
@@ -75,6 +75,32 @@ async def setup(self) -> None:
7575
headless=True,
7676
# ブラウザは現在の環境にインストールされているものを自動選択させる
7777
browser='auto',
78+
# Chrome 系ブラウザの起動最適化フラグをチューニングし、なるべくメモリ使用量を下げる
79+
# Zendriver デフォルトで指定されているフラグに加え、さらに以下のフラグを追加する
80+
browser_args=[
81+
# ウインドウをゲストモードで起動する
82+
'--bwsi',
83+
# 互換性の問題だとかが起きそうな予感がするので GPU レンダリングを無効化
84+
'--disable-gpu',
85+
'--use-gl=swiftshader',
86+
# レンダラープロセスを1つに制限することで、メモリ使用量を抑える
87+
# 今の所タブは1つしか開かないので、1つで十分
88+
'--renderer-process-limit=1',
89+
# 一時フォルダに作成されるプロファイルに保存するディスクキャッシュ領域を可能な限り小さくする
90+
'--disk-cache-size=1048576',
91+
'--media-cache-size=1048576',
92+
# Chrome に実装されている各機能のうち、ヘッドレス用途では不要なものを無効化する
93+
'--disable-client-side-phishing-detection',
94+
'--disable-component-extensions-with-background-pages',
95+
'--disable-domain-reliability',
96+
'--disable-default-apps',
97+
'--disable-extensions',
98+
'--disable-notifications',
99+
'--disable-print-preview',
100+
'--disable-speech-api',
101+
'--disable-sync',
102+
'--disable-translate',
103+
]
78104
)
79105
except FileNotFoundError as ex:
80106
logging.error(f'{self.log_prefix} Chrome or Brave is not installed.', exc_info=ex)

0 commit comments

Comments
 (0)