gpt4 book ai didi

node.js - Heroku 错误 R10(引导超时) Node 上的 Puppeteer(网络抓取应用程序)

转载 作者:行者123 更新时间:2023-12-04 07:40:36 25 4
gpt4 key购买 nike

我创建了一个网络抓取应用程序,它检查电子商务网站上的某个问题。
它能做什么:

  • 循环遍历页面数组
  • 检查每个页面上的条件
  • 如果满足条件 - 将页面推送到 temparray
  • 发送一封带有 temparray 作为正文的电子邮件

  • 我将该函数包装在 cronjob 函数中。
    在我的本地机器上它运行良好。
    像这样部署:
  • headless :真实
  • '--无沙盒',
  • '--disable-setuid-sandbox'
  • 将 pptr buildpack 链接添加到 heroku 中的设置
  • slugsize 是 500 MiB 中的 259.6 MiB

  • 它没有用。
  • 将启动超时设置为 120 秒(而不是 60 秒)

  • 有效。但是只跑过一次。
    由于它想每天多次运行该功能,因此我需要解决该问题。
    我正在运行另一个应用程序,它使用相同的 cronjob 和通知功能,并且可以在 heroku 上运行。
    这是我的代码,如果有人感兴趣。
    const puppeteer = require('puppeteer');
    const nodemailer = require("nodemailer");
    const CronJob = require('cron').CronJob;
    let articleInfo ='';
    const mailArr = [];
    let body = '';

    const testArr = [
    'https://bxxxx..', https://b.xxx..', https://b.xxxx..',
    ];

    async function sendNotification() {

    let transporter = nodemailer.createTransport({
    host: 'mail.brxxxxx.dxx',
    port: 587,
    secure: false,
    auth: {
    user: 'hey@b.xxxx',
    pass: process.env.heyBfPW2
    }
    });

    let textToSend = 'This is the heading';
    let htmlText = body;

    let info = await transporter.sendMail({
    from: '"BB Checker" <hey@baxxxxx>',
    to: "sxx..xx...xx@gmail.com",
    subject: 'Hi there',
    text: textToSend,
    html: htmlText
    });
    console.log("Message sent: %s", info.messageId);
    }

    async function boxLookUp (item) {
    const browser = await puppeteer.launch({
    headless: true,
    args: [
    '--no-sandbox',
    '--disable-setuid-sandbox',
    ],
    });
    const page = await browser.newPage();
    await page.goto(item);
    const content = await page.$eval('.set-article-info', div => div.textContent);
    const title = await page.$eval('.product--title', div => div.textContent);
    const orderNumber = await page.$eval('.entry--content', div => div.textContent);

    // Check if deliveryTime is already updated
    try {
    await page.waitForSelector('.delivery--text-more-is-coming');
    // if not
    } catch (e) {
    if (e instanceof puppeteer.errors.TimeoutError) {
    // if not updated check if all parts of set are available
    if (content != '3 von 3 Artikeln ausgewählt' && content != '4 von 4 Artikeln ausgewählt' && content != '5 von 5 Artikeln ausgewählt'){
    articleInfo = `${title} ${orderNumber} ${item}`;
    mailArr.push(articleInfo)
    }
    }
    }
    await browser.close();
    };

    const checkBoxes = async (arr) => {

    for (const i of arr) {
    await boxLookUp(i);
    }

    console.log(mailArr)
    body = mailArr.toString();
    sendNotification();
    }

    async function startCron() {

    let job = new CronJob('0 */10 8-23 * * *', function() { // run every_10_minutes_between_8_and_11
    checkBoxes(testArr);
    }, null, true, null, null, true);
    job.start();
    }

    startCron();

    最佳答案

    现在有同样的问题 3 天了。这里有一些可能有帮助的东西:https://stackoverflow.com/a/55861535/13735374
    必须与 Procfile 一起完成。

    关于node.js - Heroku 错误 R10(引导超时) Node 上的 Puppeteer(网络抓取应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67498169/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com