Heroku では、Puppeteer の実行を 3 回のみに制限しています
P粉986860950
P粉986860950 2024-04-02 19:49:08
0
1
701

私は、puppeteer を使用して別の Web サイトからデータをスクレイピングする Web サイトを開発しています。ローカルマシン上で npm サーバーを実行すると、データは問題なくスクレイピングされますが、これを Heroku にデプロイすると、探している最初の 3 つのファイルのみが実行され、その後停止します。

基本的に学校の Web サイトからコースに関するデータをスクレイピングしたいので、for ループ内で次の行を実行します。

let data =wait for crasher.scrapeData(classesTaken[i].code)

これにより、以下の関数が実行されます。私自身のプライバシーを考慮して、実際の Web サイトの URL を置き換えました。

リーリー

これは私自身のローカルサーバーでは正常に動作します。ただし、Heraku サイトにプッシュすると、最初の 3 クラスのコードのみが実行されます。これは、dyno のメモリ不足が原因である可能性があると感じていますが、使用可能なメモリを待機させる方法がわかりません。

これは展開ログです

リーリー

これらのコマンドを使用してビルド キャッシュをクリアしようとする記事をどこかで読みました

リーリー

これを試しましたが、何も機能しません。また、Puppeteer GitHub にある Heroku のトラブルシューティング手順に従いました。

これが私の動的記憶に関係しているのではないかと私が考える理由は、この関連記事のおかげです。この場合、使用できる空きメモリができるまで待つ方法を考えたいと思います。

編集: また、現在ブラウザをヘッドレス モードで実行していますが、まったく同じエラーが発生します。

P粉986860950
P粉986860950

全員に返信(1)
P粉129168206

さらにログを記録した後、ブラウザを開いたまま閉じなかったためにメモリ リークが発生したことが問題であることがわかりました。 scrapeData() 関数の return ステートメントの前に行 await browser.close() を追加すると、メモリ リークが停止し、サーバーはすべてのクラス コードを正しく解析できるようになります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート