You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright与PM2问题:创建PlaywrightContextManager时进程挂起

解决Scrapy-Playwright爬虫在PM2启动下挂起的问题
  • 强制指定Playwright无头模式及启动参数
    后台进程无桌面环境,Playwright默认配置可能无法正常初始化浏览器。在代码中明确设置启动参数:

    # 异步API示例
    async def init_browser():
        playwright = await async_playwright().start()
        return await playwright.chromium.launch(
            headless=True,
            args=["--disable-gpu", "--no-sandbox", "--disable-dev-shm-usage"]
        )
    
    # 同步API示例
    def init_browser():
        with sync_playwright() as playwright:
            browser = playwright.chromium.launch(
                headless=True,
                args=["--disable-gpu", "--no-sandbox", "--disable-dev-shm-usage"]
            )
            return browser
    

    --no-sandbox规避权限限制,--disable-dev-shm-usage解决后台环境内存不足导致的启动失败。

  • 配置PM2环境变量,确保Playwright定位到浏览器文件
    PM2启动时的环境变量与手动运行存在差异,需指定浏览器路径:
    在PM2配置文件(ecosystem.config.js)中添加:

    module.exports = {
      apps: [{
        name: 'my_spider',
        script: 'scrapy crawl my_spider',
        env: {
          PLAYWRIGHT_BROWSERS_PATH: '0', // 强制使用系统级安装的浏览器,或填写具体路径
        }
      }]
    };
    

    启动前务必执行playwright install chromium(对应你使用的浏览器)完成安装。

  • 切换PM2启动模式为fork
    Cluster模式下多进程共享资源会与Playwright浏览器实例冲突,导致挂起。修改配置:

    module.exports = {
      apps: [{
        name: 'my_spider',
        script: 'scrapy crawl my_spider',
        exec_mode: 'fork',
        instances: 1
      }]
    };
    
  • 确保PM2运行用户权限充足
    PM2若以root或非当前用户运行,可能无法访问浏览器文件或创建临时目录。指定运行用户启动:

    pm2 start ecosystem.config.js --user your_username
    
  • 开启日志排查具体问题
    在PM2配置中添加日志输出,查看启动时的错误信息:

    module.exports = {
      apps: [{
        name: 'my_spider',
        script: 'scrapy crawl my_spider',
        out_file: './spider_out.log',
        error_file: './spider_error.log',
        merge_logs: true
      }]
    };
    

    通过spider_error.log定位浏览器初始化时的具体异常。

内容的提问来源于stack exchange,提问作者ilarion_kuleshov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:25:33