2.7.17 与 Coiled 配合使用

原文链接: https://docs.astral.sh/uv/guides/integration/coiled/

2.7.17 与 Coiled 配合使用

Coiled 是一个无服务器、注重用户体验的云计算平台,让你可以轻松在云端硬件(AWS、GCP 和 Azure)上运行代码。

本指南展示如何使用 uv 管理依赖、使用 Coiled 部署到云端,从而在云上运行 Python 脚本。

用 uv 管理脚本依赖

注意

本指南通篇使用这个具体示例,但任何 Python 脚本都可以与 uv 和 Coiled 配合使用。

我们以如下脚本为例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# process.py
# /// script
# requires-python = ">=3.12"
# dependencies = [
#   "pandas",
#   "pyarrow",
#   "s3fs",
# ]
# ///

import pandas as pd

df = pd.read_parquet(
    "s3://coiled-data/uber/part.0.parquet",
    storage_options={"anon": True},
)
print(df.head())

该脚本使用 pandas 加载托管在 S3 公共存储桶中的 Parquet 文件,然后打印前几行。它使用内联脚本元数据列出自己的依赖。

在本地运行该脚本时,例如:

1
$ uv run process.py

uv 会自动创建虚拟环境并安装其依赖。

关于在 uv 中使用内联脚本元数据的更多内容,请参阅脚本指南。

用 Coiled 在云端运行脚本

使用内联脚本元数据使脚本完全自包含:它包含了运行所需的信息。这使脚本更容易在其他机器(例如云端机器)上运行。

有很多场景需要本地工作站之外的资源,例如:

  • 处理大量云端托管的数据
  • 需要 GPU 之类的加速硬件,或内存更大的大型机器
  • 用数百或数千个不同输入并行运行同一个脚本

Coiled 让在云端硬件上运行代码变得简单。

首先,使用 coiled login 登录 Coiled:

1
$ uvx coiled login

如果你还没有 Coiled 账号,系统会提示你创建 —— 开始使用 Coiled 是免费的。

要让 Coiled 在 AWS 的虚拟机上运行该脚本,请在文件顶部添加两行注释:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# process.py
# COILED container ghcr.io/astral-sh/uv:debian-slim
# COILED region us-east-2

# /// script
# requires-python = ">=3.12"
# dependencies = [
#   "pandas",
#   "pyarrow",
#   "s3fs",
# ]
# ///

import pandas as pd

df = pd.read_parquet(
    "s3://coiled-data/uber/part.0.parquet",
    storage_options={"anon": True},
)
print(df.head())

提示

虽然 Coiled 支持 AWS、GCP 和 Azure,但本示例假设使用 AWS(参见上面的 region 选项)。如果你是 Coiled 新用户,会自动获得一个运行在 AWS 上的免费账号。如果你不在 AWS 上运行,可以为你所用的云服务商指定有效的 region,或者删除上面的 region 行。

这些注释告诉 Coiled 在运行脚本时使用官方 uv Docker 镜像(确保 uv 可用),并在 AWS 的 us-east-2 区域运行(本示例的数据文件恰好在那里),以避免任何数据传出费用。

要提交批处理任务让 Coiled 运行,请使用 coiled batch run 在云端执行 uv run 命令:

1
2
$ uvx coiled batch run \
    uv run process.py

此前在本地运行的同一流程,现在运行在 AWS 的远程云虚拟机上。

你可以在 cloud.coiled.io 的 UI 中,或用终端里的 coiled batch status、coiled batch wait 和 coiled batch logs 命令监控批处理任务的进度。

Coiled UI

注意我们还可以指定更多配置,例如实例类型(默认是 4 核、16 GiB 内存的虚拟机)、磁盘大小、是否使用竞价实例等。更多细节请参阅 Coiled Batch 文档。

关于 Coiled 的更多细节,以及它如何帮助你应对其他用例,请参阅 Coiled 文档。

最后修改 September 25, 2026: 更新 (221c74c33)