Cloud Functions에서 Puppeteer가 작동하지 않을 때

Puppeteer는 Google의 Chrome DevTools Teams에서 개발 한 브라우저 자동화 라이브러리입니다. Cloud Functions에서도 사용할 수 있다고 발표되고 있다.

Introducing headless Chrome support in Cloud Functions and App Engine | Google Cloud Blog

하지만 Cloud Functions에서 움직일 때만, Navigation Timeout Exceeded 오류 등으로 Puppeteer가 움직이지 않는 경우가 있다(움직일 때도 있기 때문에 귀찮음).
(덧붙여서 스펙은 runtime: Node.js 8 , memory: 2GB , region: asia-northeast1 )

Navigation Timeout Exceeded 오류는 시간 내에 처리가 완료되지 않을 때 발생하는 오류이지만 Cloud functions가 원인인 경우 timeout을 아무리 길게 설정해도 안됩니다.

Puppeteer (Chromium)의 시작 옵션 검토



Puppeteer slow execution on Cloud Functions · Issue #3120 · GoogleChrome/puppeteer

이 issue에서도 여러가지 논의되고 있다.
  const browser = await puppeteer.launch({
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '-–disable-dev-shm-usage',
      '--disable-gpu',
      '--no-first-run',
      '--no-zygote',
      '--single-process',
    ],
    headless: true,
  });

흉내내고 설정해 보면, 움직였다
같은 환경에서 곤란하다면, 시험해 보세요.

Chromium 옵션 목록
List of Chromium Command Line Switches « Peter Beverloo

좋은 웹페이지 즐겨찾기