2

我最近在 heroku 部署了一个应用程序。它使用 python pyppeteer 包。在 repl.it 上测试时我没有遇到任何问题。但不幸的是,在 heroku 中,浏览器不断崩溃。

我使用 requirements.txt 来安装 pyppeteer 包。我还尝试使用 apt heroku buildpack 来安装 pupeteer 按照此处工作所需的要求

我的程序:

async def mainer(link, path, is_image):
    browser = await launch(args=['--no-sandbox'])
    page = await browser.newPage()
    await page.goto(link)
    if is_image:
        await page.screenshot({'path': f'{path}', 'fullPage': True, 'type': 'png'})
    else:
        await page.pdf({'path': f'{path}'})
    await browser.close()

这是来自 heroku 的完整回溯错误:

2020-05-14T19:39:50.115643+00:00 app[worker.1]:     await handler.callback(self.client, *args)
2020-05-14T19:39:50.115644+00:00 app[worker.1]:   File "/app/plugins/downloader.py", line 61, in cb_
2020-05-14T19:39:50.115645+00:00 app[worker.1]:     await mainer(url,file,mode)
2020-05-14T19:39:50.115645+00:00 app[worker.1]:   File "/app/plugins/downloader.py", line 13, in mainer
2020-05-14T19:39:50.115646+00:00 app[worker.1]:     browser = await launch(args=['--no-sandbox'])
2020-05-14T19:39:50.115646+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/pyppeteer/launcher.py", line 305, in launch
2020-05-14T19:39:50.115647+00:00 app[worker.1]:     return await Launcher(options, **kwargs).launch()
2020-05-14T19:39:50.115648+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/pyppeteer/launcher.py", line 166, in launch
2020-05-14T19:39:50.115648+00:00 app[worker.1]:     self.browserWSEndpoint = get_ws_endpoint(self.url)
2020-05-14T19:39:50.115648+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/pyppeteer/launcher.py", line 225, in get_ws_endpoint
2020-05-14T19:39:50.115649+00:00 app[worker.1]:     raise BrowserError('Browser closed unexpectedly:\n')
2020-05-14T19:39:50.115649+00:00 app[worker.1]: pyppeteer.errors.BrowserError: Browser closed unexpectedly:
2020-05-14T19:39:50.115650+00:00 app[worker.1]: 
4

2 回答 2

2

对于 Heroku 部署,我遇到了这个问题

pyppeteer.errors.BrowserError: Browser closed unexpectedly:

之后,我在启动 Puppeteer 时添加了“--no-sandbox”模式,并将“headless”设置为 True。

from pyppeteer import launch
    BROWSER = await launch({'headless': True, 'args': ['--no-sandbox']})

我在我的测功机设置中添加了 2 个构建包:

在此处输入图像描述

这对我有用

于 2021-11-23T01:21:54.820 回答
2

如果我们关心使用 Heroku 提供的buildpack,将会有一个名为GOOGLE_CHROME_SHIM. 我们可以将此变量用作pyppeteer.launch()or的参数webdriver.Chrome()

于 2021-01-21T20:01:27.460 回答