Heroku는 Puppeteer를 세 번만 실행하도록 제한합니다.
P粉986860950
P粉986860950 2024-04-02 19:49:08
0
1
654

저는 퍼핏티어를 사용하여 다른 웹사이트에서 데이터를 스크랩하는 웹사이트를 개발 중입니다. 내 로컬 컴퓨터에서 npm 서버를 실행하면 데이터가 잘 긁히지만 Heroku에 배포하면 내가 찾고 있는 처음 세 개의 파일만 실행된 다음 중지됩니다.

저는 학교 웹사이트에서 강좌에 대한 데이터를 긁어내고 싶어서 for 루프 내에서 이 줄을 실행합니다.

let data =等待crawler.scrapeData(classesTaken[i].code)

아래 기능이 실행됩니다. 개인정보 보호를 위해 실제 웹사이트 URL을 교체했습니다.

으아아아

이것은 내 로컬 서버에서 잘 작동합니다. 그러나 내 Heroku 사이트에 푸시하면 처음 세 클래스의 코드만 실행됩니다. 내 다이노에 메모리가 부족해서 그런 것 같지만 사용 가능한 메모리를 기다리게 하는 방법을 모르겠습니다.

배포 로그입니다

으아아아

이 명령을 사용하여 빌드 캐시를 지워보려고 어딘가에서 읽었습니다

으아아아

이미 시도했지만 아무것도 작동하지 않습니다. 또한 Puppeteer GitHub에서 Heroku에 대한 문제 해결 지침을 따랐습니다.

이것이 나의 동적 기억과 관련이 있을 것이라고 생각하는 이유는 이 관련 기사 때문입니다. 이런 경우에는 사용할 수 있는 여유 메모리가 생길 때까지 어떻게 기다려야 하는지 알고 싶습니다.

EDIT: 이제 브라우저를 헤드리스 모드로 실행하고 있는데 결과적으로 똑같은 오류가 발생합니다.

P粉986860950
P粉986860950

모든 응답(1)
P粉129168206

추가로 로그인한 후 문제는 브라우저를 열었다가 닫지 않아 메모리 누수가 발생했다는 사실을 발견했습니다. scrapeData() 函数的 return 语句之前添加行 await browser.close()까지 메모리 누수가 중지되고 서버는 모든 클래스 코드를 올바르게 구문 분석할 수 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿