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

Render部署Python Telegram Bot遇Playwright Chromium启动失败

在Render上部署Playwright Chromium的问题解决

核心问题根源

Render的/tmp目录是临时存储,两个关键特性导致你的问题:

  1. 每次服务重启、部署更新时,/tmp会被完全清空;
  2. 构建阶段与运行阶段的容器是隔离的,构建时写入/tmp的文件,运行阶段无法访问。
    这就是为什么你执行playwright install chromium后,运行时找不到二进制文件的原因。

正确配置步骤

1. 调整浏览器安装路径,避开临时目录

不要将Playwright浏览器安装到/tmp,改用项目根目录下的持久化目录(Render会保留项目根目录的文件)。建议设置PLAYWRIGHT_BROWSERS_PATH为./.playwright(项目内的隐藏目录)或$HOME/.playwright。

2. 更新render.yaml配置

修改构建命令和环境变量,确保浏览器安装到持久目录:

services:
  - type: background
    name: telegram-trading-bot
    env: python
    plan: starter
    region: frankfurt
    buildCommand: |
      pip install -r requirements.txt
      # 指定路径安装Chromium
      PLAYWRIGHT_BROWSERS_PATH=./.playwright playwright install chromium
    startCommand: python bot.py
    envVars:
      - key: PLAYWRIGHT_BROWSERS_PATH
        value: ./playwright
      # 添加你的其他环境变量(如Telegram Bot Token、Bybit API密钥等)

3. 确保requirements.txt包含Playwright

aiohttp>=3.9.0
python-telegram-bot>=13.7
playwright>=1.39.0
opencv-python>=4.8.0
# 其他依赖包

4. 代码中正确启动无头Chromium

Render是无头环境,必须启用headless=True,同时添加必要的启动参数避免沙箱问题:

from playwright.async_api import async_playwright

async def analyze_tradingview():
    async with async_playwright() as p:
        # 必须启用无头模式,Render不支持图形界面浏览器
        browser = await p.chromium.launch(
            headless=True,
            args=[
                "--no-sandbox",
                "--disable-dev-shm-usage"  # 解决Render的共享内存限制
            ]
        )
        page = await browser.new_page()
        await page.goto("https://www.tradingview.com/")
        # 后续K线分析操作...
        await browser.close()

额外说明

  • 本地Mac无头模式不生效属于本地环境问题,无需在意,Render上必须使用无头模式;
  • 如果你之前手动指定了executable_path,请删除该参数,让Playwright通过PLAYWRIGHT_BROWSERS_PATH自动查找二进制文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:13:19