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

如何在Google Cloud部署需调用多脚本的Python Dash应用

部署Dash应用到Google Cloud并实现脚本触发+CSV读取方案

核心前提说明

云端环境的本地文件系统是临时且不可靠的,不能像本地那样用目录存储CSV文件,必须改用Google Cloud Storage(GCS)存储生成的文件,所有脚本和app.py都要通过GCS完成数据读写。


方案一:Cloud Run部署(推荐,无服务器轻量)

Cloud Run适合容器化部署,支持自动扩缩容,运维成本低。

1. 代码与依赖准备

  • 将app.py和3个脚本放在同一目录,创建requirements.txt列出所有依赖(包括dash、google-cloud-storage等)
  • 修改脚本和app.py的文件读写逻辑:
    • 脚本生成CSV后,上传到GCS指定存储桶(比如my-dash-csv-bucket)
    • app.py从GCS对应路径读取CSV,而非本地目录
    • 示例代码片段(上传GCS):
      from google.cloud import storage
      
      def upload_to_gcs(bucket_name, source_file_name, destination_blob_name):
          storage_client = storage.Client()
          bucket = storage_client.bucket(bucket_name)
          blob = bucket.blob(destination_blob_name)
          blob.upload_from_filename(source_file_name)
      
    • 读取GCS的代码:
      def download_from_gcs(bucket_name, source_blob_name, destination_file_name):
          storage_client = storage.Client()
          bucket = storage_client.bucket(bucket_name)
          blob = bucket.blob(source_blob_name)
          blob.download_to_filename(destination_file_name)
      

2. 容器化打包

创建Dockerfile,内容示例:

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["gunicorn", "--bind", ":8080", "--workers", "1", "--threads", "8", "app:server"]

(注:Dash应用需在app.py中添加server = app.server,供gunicorn调用)

3. 脚本触发逻辑

在app.py需要触发脚本的位置,用subprocess调用,示例:

import subprocess
import os

# 触发脚本1
subprocess.run(["python", "script1.py"], check=True, cwd=os.getcwd())
# 同理触发脚本2、3

4. 部署步骤

  • 先创建GCS存储桶:用Google Cloud控制台或执行gsutil mb gs://my-dash-csv-bucket命令
  • 给Cloud Run服务分配GCS读写权限:部署时选择“允许全访问Cloud API”,或创建自定义服务账号并绑定roles/storage.objectAdmin权限
  • 执行部署命令:
    gcloud run deploy my-dash-app --source . --region us-central1 --allow-unauthenticated
    

方案二:App Engine部署(适合快速托管Web应用)

App Engine是PaaS服务,无需自行管理容器,部署流程简单。

1. 代码与依赖调整

和Cloud Run一致,将所有文件读写逻辑切换到GCS,创建requirements.txt。

2. 创建app.yaml配置文件

内容示例:

runtime: python39
entrypoint: gunicorn --bind :$PORT --workers 1 --threads 8 app:server

env_variables:
  GCS_BUCKET_NAME: "my-dash-csv-bucket"

instance_class: F2

3. 权限与脚本触发

  • 同样在app.py中用subprocess调用脚本
  • 给App Engine服务账号添加GCS读写权限:在IAM控制台找到[项目ID]@appspot.gserviceaccount.com,绑定roles/storage.objectAdmin角色

4. 部署命令

gcloud app deploy

方案三:Compute Engine部署(与本地环境最接近)

如果想完全复刻本地运行逻辑,可使用虚拟机,适合有基础运维经验的场景。

1. 创建虚拟机实例

在Google Cloud控制台创建Compute Engine虚拟机,选择合适的机器类型,启动后通过SSH连接实例。

2. 部署应用

  • 在虚拟机上安装Python、Git等工具
  • 克隆或上传代码到虚拟机
  • 安装依赖:pip install -r requirements.txt
  • 用systemd配置服务,让app.py开机自启

3. 文件存储与脚本触发

  • 可使用虚拟机本地磁盘存储CSV,但重启后数据会丢失,建议用gcsfuse工具将GCS存储桶挂载到本地目录,实现本地目录式的GCS读写
  • 脚本触发逻辑与本地完全一致,用subprocess调用即可

关键注意事项

  • 所有文件读写必须依赖GCS,不能使用云端本地临时目录
  • 确保服务账号拥有足够的GCS权限,避免读写失败
  • 若脚本运行时间较长,建议改用Cloud Tasks或Cloud Functions异步触发,避免阻塞Dash应用的请求处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:33:02