由 marimo 提供支持,通过 Python notebooks 探索您的 Cloudflare 数据
许多开发人员、数据科学家和研究人员在 Python Notebooks 中完成大部分工作:十多年来, Python Notebooks 一直是数据科学和数据共享的事实标准。Notebooks 之所以受欢迎,是因为它们可以轻松编码、探索数据、制作原型和分享结果。Cloudflare 大量使用 Notebooks,我们也发现越来越多的开发人员使用 Notebooks 处理数据,从分析 HTTP 流量趋势、查询 Workers Analytics Engine 到查询自己存储在 R2 中的 Iceberg 表。
传统 Notebooks 非常强大,但在构建它们时并没有考虑到协作、可重复性或作为数据应用部署的因素。随着使用量在不同团队和工作流程中的不断增长,这些限制开始面临大规模工作的挑战。
考虑到这些挑战,marimo 重新构想了 Notebooks 的体验。这是一个开源的反应式 Python Notebook,具有可重复性,易于在 Git 中跟踪,可作为独立脚本执行并且可部署。我们与 marimo 团队合作,为 Cloudflare 开发人员带来这种简化的、生产友好的体验。减少因工具问题带来的麻烦,将更多时间用于探索数据。
通过本篇文章,我们将与大家分享三件事:
marimo notebook 内置 Cloudflare 身份验证 – 直接从 notebook 登录您的 Cloudflare 账户,即可使用 Cloudflare API,无需创建 API 令牌
开源 notebook 示例 – 通过适用于 R2、Workers AI、D1 等服务的可即刻运行的 notebook 示例探索您的 Cloudflare 数据
在 Cloudflare 容器上运行 marimo – 轻松将 marimo notebook 部署到 Cloudflare 容器,实现可扩展、长时间运行的数据工作流
如想立即开始探索您的 Cloudflare 数据 - 请前往: notebooks.cloudflare.com 。您也可以继续阅读,了解关于 marimo 的更多信息,我们如何在 notebooks 中简化身份验证,以及如何使用 marimo 在 Cloudflare 上浏览和共享 notebooks 和应用。
为什么选择 marimo?
marimo 是一个开源的反应式 Python notebook,专门为处理数据而设计,从头开始构建,以解决传统 notebooks 的许多问题。
将 marimo 与传统 notebooks 区分开来的核心功能在于其响应式执行模型,该模型由单元格上的静态推理数据流图谱提供支持。运行一个单元格或与 UI 元素交互,marimo 要么运行依赖单元格,要么将其标记为过时(根据您的需求选择)。这可以保持代码和输出的一致性,防止错误发生,并显著提高用数据进行实验的速度。
得益于反应式执行,notebooks 也可作为数据应用部署,易于共享。您可以在本地、在云服务器、GPU —— 任何传统上可以运行软件的地方运行 marimo notebooks,同时,您也可以通过 WebAssembly 完全在浏览器中运行它们,使共享成本降至零。
因为 marimo notebooks 以 Python 格式存储,所以它们具备软件的所有优势:使用 Git 管理版本,作为脚本或管道执行,使用 pytest 测试,通过 uv 指定依赖包要求,并将符号从您的 notebook 导入其他 Python 模块。虽然存储为 Python,marimo 也支持 SQL 和数据源,例如 DuckDB、Postgres 和基于 Iceberg 的数据目录(除了 RAM 中的数据外,marimo 的 AI 助手还可以访问这些数据目录)。
要了解 marimo notebook 是什么样的,请查看下面的嵌入式示例 notebook:
图2
使用 marimo 探索您的 Cloudflare 数据
准备好在 marimo notebook 中探索您自己的 Cloudflare 数据了吗?最简单的开始方法是访问 notebooks.cloudflare.com 并通过 WebAssembly (Wasm) 直接在浏览器中运行我们的一个示例notebook。您也可以在我们的 notebook 示例 GitHub 存储库中浏览源代码。
如果想要创建您自己的 notebook 并在本地运行,下面是一个简单示例,向您展示如何使用您的 Cloudflare 账户进行身份验证,并列出您有权访问的区域:
1.如果尚未安装 uv,请按照安装指南进行安装。
2.为您的 notebook 创建一个新的项目目录:
图3
3.初始化一个新的 uv 项目(这将创建一个 .venv和一个pyproject.toml):
图4
4.添加 marimo 和所需的依赖项:
图5
5.创建一个名为 list-zones.py 的文件,并将其粘贴到以下 notebook 中:
图6
6.打开 notebook 编辑器:
图7
7.根据 notebook 中的 OAuth 提示符登录。通过身份验证后,您将在最终单元格中看到 Cloudflare 区域的列表。
大功告成!从这里,您可以展开 notebook 以调用 Workers AI 模型,查询 R2 Data Catalog 中的 Iceberg 表,或与任何 Cloudflare API 交互。
OAuth 在 notebooks 中的工作方式
您可以把 OAuth 想象成 notebooks 和 Cloudflare 之间的一次安全握手。无需复制粘贴 API 令牌,您只需点击“使用 Cloudflare 登录”,notebook 会处理剩下的事情。
我们使用 PKCE(代码交换证明密钥)构建这种体验,这是一种安全的 OAuth 2.0 流程,无需使用客户端密钥,并能防止代码拦截攻击。PKCE 的工作原理是生成一个一次性代码,该代码可在登录后交换令牌,永远不需要共享客户端密钥。了解有关 PKCE 如何工作的更多信息。
登录组件位于 Cloudflare 和 marimo 合作的 moutils.oauth 中,使notebooks 中的 OAuth 身份验证简单而安全。要使用它,只需创建一个如下所示的单元格:
图8
运行单元格时,您将看到一个“使用 Cloudflare 登录”按钮:
图9
登录后,您将拥有一个可在使用 Cloudflare API 时传递的只读访问令牌。
在 Cloudflare 上运行 marimo:Workers 与容器
除了在本地运行 marimo notebooks 外,您还可以使用 Cloudflare 通过 Workers Static Assets 或 Cloudflare Containers 共享和运行它们。
如果您有本地 notebook 想与他人分享,可将其发布到 Workers。这之所以可行,是因为 marimo 可以将 notebooks 导出到 WebAssembly,从而使它们可以完全在浏览器中运行。您仅需使用两个命令来开始:
图10
如果您的 notebook 需要身份验证,可叠加 Cloudflare Access,实现经过身份验证的安全访问。
对于需要更多计算能力、持久会话或长时间运行的任务的 notebooks ,您可以在我们的新容器平台上部署 marimo。如要开始使用,请在 GitHub 上查看我们的 marimo 容器示例。
Cloudflare + marimo 的下一步计划
本篇文章仅仅标志着 Cloudflare 与 marimo 合作的开端。我们十分期待看到您如何使用我们基于 WebAssembly 共同协作的 notebook 平台来探索 Cloudflare 数据,同时我们也希望通过 marimo notebooks 帮助您对您的数据进行高性能计算——使您能够直接运行大规模分析和批量处理作业。敬请期待!
Cloudflare 保护整个企业网络,帮助客户高效构建互联网规模的应用程序,加速任何网站或互联网应用程序,抵御 DDoS 攻击,防止黑客入侵,并能协助您实现 Zero Trust 的部署与实施。
从任何设备访问 1.1.1.1,使用我们的免费应用加速和保护您的互联网。
立即联系我们,获取更多相关信息http://t.cn/A6Tx4yTT
#Cloudflare##marimo#
