Skip to content

Commit 660ddc5

Browse files
committed
playwright manager read config from env
1 parent 15e4362 commit 660ddc5

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

dtable_events/convert_page/manager.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import threading
1515
import time
1616
import os
17-
import traceback
1817
from typing import List, Dict, Optional, Any, Tuple
1918
from concurrent.futures import Future, wait as wait_futures, FIRST_EXCEPTION
2019
import queue
@@ -27,10 +26,6 @@
2726
logger = logging.getLogger(__name__)
2827

2928

30-
class TaskCancelled(Exception):
31-
pass
32-
33-
3429
class RobustPlaywrightManager:
3530
"""
3631
Manager runs a background worker thread that owns an asyncio loop and Playwright.
@@ -157,8 +152,8 @@ def _thread_main(self):
157152
"""Thread target: setup and run asyncio event loop."""
158153
try:
159154
asyncio.run(self._worker_main())
160-
except Exception:
161-
traceback.print_exc()
155+
except Exception as e:
156+
logger.exception(e)
162157
finally:
163158
self._worker_ready.clear()
164159

@@ -167,17 +162,17 @@ async def _worker_main(self):
167162
self._loop = asyncio.get_event_loop()
168163
try:
169164
self._playwright = await async_playwright().start()
170-
except Exception:
171-
traceback.print_exc()
165+
except Exception as e:
166+
logger.exception(e)
172167
raise
173168

174169
# launch browsers
175170
self._browsers = [None] * self.num_browsers
176171
for i in range(self.num_browsers):
177172
try:
178173
self._browsers[i] = await self._launch_browser(i)
179-
except Exception:
180-
traceback.print_exc()
174+
except Exception as e:
175+
logger.exception(e)
181176
self._browsers[i] = None
182177

183178
# slot queue contains browser indices for available page slots
@@ -254,8 +249,8 @@ async def _health_monitor(self):
254249
}
255250
except asyncio.CancelledError:
256251
return
257-
except Exception:
258-
traceback.print_exc()
252+
except Exception as e:
253+
logger.exception(e)
259254

260255
def _aggregate_browser_process_stats(self) -> Tuple[float, float]:
261256
try:
@@ -294,8 +289,8 @@ async def _consumer_loop(self):
294289
asyncio.create_task(self._handle_task(task_dict, fut))
295290
except asyncio.CancelledError:
296291
break
297-
except Exception:
298-
traceback.print_exc()
292+
except Exception as e:
293+
logger.exception(e)
299294
await asyncio.sleep(0.1)
300295

301296
async def _handle_task(self, task: Dict[str, Any], fut: Future):
@@ -374,5 +369,16 @@ async def _handle_task(self, task: Dict[str, Any], fut: Future):
374369
def get_playwright_manager():
375370
global playwright_manager
376371
if not playwright_manager:
377-
playwright_manager = RobustPlaywrightManager()
372+
try:
373+
num_browsers = int(os.environ.get('CONVERT_PDF_BROWSERS', '2'))
374+
except:
375+
num_browsers = 2
376+
try:
377+
pages_per_browser = int(os.environ.get('CONVERT_PDF_PAGES_PER_BROWSER', '3'))
378+
except:
379+
pages_per_browser = 3
380+
playwright_manager = RobustPlaywrightManager(
381+
num_browsers=num_browsers,
382+
pages_per_browser=pages_per_browser
383+
)
378384
return playwright_manager

0 commit comments

Comments
 (0)