Playwright 크롤러 Streamlit Cloud 배포 시 TargetClosedError 트러블슈팅

🚀 결과물 대시보드 : https://youtu.be/HnL0wOqci7Q
안녕하세요.
파이썬으로 웹 크롤러를 개발하여 Streamlit Community Cloud에 배포하는 과정에서
겪은 에러 해결 경험을 공유합니다.
로컬에서는 완벽하게 돌아가던 Playwright 크롤러가 클라우드에만 올라가면
TargetClosedError를 내며 강제 종료되었습니다.
원인은 모니터가 없는 리눅스 컨테이너 환경의 GUI 부재, 그리고 크롬 샌드박스와 컨테이너 간의 권한 충돌이었습니다.
단순히 패키지를 설치하는 것을 넘어, 아래와 같이 클라우드 환경에 맞춘 옵션을 브라우저 실행 객체에 주입하여 해결했습니다.
Python
# kcar_headless_scraper.py
import os
from playwright.sync_api import sync_playwright
def init_headless_browser():
os.system("playwright install chromium")
with sync_playwright() as playwright_instance:
# 클라우드 컨테이너의 제한된 메모리와 샌드박스 환경을
# 돌파하기 위한 필수 args 옵션입니다.
browser_instance = playwright_instance.chromium.launch(
headless=True,
args=[
'--no-sandbox',
'--disable-dev-shm-usage'
]
)
page_instance = browser_instance.new_page()
# 타겟 URL 접속 및 동적 데이터 수집
page_instance.goto("https://www.kcar.com")
# ... 데이터 추출 로직 ...
browser_instance.close()
비슷한 배포 환경에서 막히신 분들께 레퍼런스가 되었으면 좋겠습니다.
댓글을 남기려면 로그인이 필요합니다.
로그인 후 이 페이지로 돌아와 바로 댓글을 남길 수 있습니다.