SuperAPI AI 工具集

python-workers

部署与运维

查看项目

更新于 10-16 06:59

技能介绍

用途

python-workers 技能面向在 Cloudflare Workers 上使用 Python 进行开发的场景。它并不重复 Cloudflare Workers 的通用文档,而是专门汇集在使用 Python/Pyodide 运行时(而非 JavaScript/TypeScript)时出现的差异、意外行为和易错点。

主要能力

技能以决策树的形式组织,覆盖以下任务方向:

  • 项目搭建:使用 pywrangler 快速开始、Python 特有配置标志、添加 Python 包(Pyodide 兼容性)、本地开发密钥(.dev.vars)、使用 mock 绑定设置 pytest、从 2025 年 12 月之前的 Worker 迁移。
  • 在 Python 中使用 Cloudflare 绑定:D1、KV、Queues 等绑定的访问方式;Durable Objects(事务性存储、Alarms、WebSocket 休眠、出站 WebSocket 客户端);Workflows(多步骤);Service Bindings / RPC;Static Assets;将 Python 可调用对象传给 JS API(create_proxy)等。
  • 跨越 JS/Python 边界(FFI):JS → Python 转换(.to_py())、Python → JS 转换(to_js + dict_converter)、类型兼容矩阵、None/undefined/null 差异、二进制数据处理、D1 结果转换、大二进制数据(>10MB)绕过 Python 等。
  • 测试 Python Worker:使用 mock 绑定进行单元测试、HAS_PYODIDE 可测试性模式、Pyodide 伪实现用于 FFI 测试、mock 通过但生产失败(JsProxy)的排查、运行 pytest 等。
  • 问题排查:D1 返回 JsProxy 而非 dict、字典被 Cloudflare API 拒绝、D1 中 None/undefined/null 差异、冷启动过慢、模块级 PRNG 失败、包安装失败、缺少 python_workers 标志、js.eval() 被禁用、R2/KV 拒绝 Python 字节、队列消息在冷启动时取消或本地不投递、Worker 因大 R2 对象崩溃、测试通过但生产失败、模板无文件系统访问等。

使用方式

技能以参考文件形式组织,全部位于 references/python-workers/ 目录下:

  • README.md:运行时概览、快速开始、Pyodide 工作原理、项目结构。
  • api.md:Python 特有的处理函数签名、FFI 函数(to_js/to_py/create_proxy)、绑定访问模式、Response(含二进制)、Service Bindings(RPC + dict→Map 注意事项)、Workflows、workers.fetch()。
  • configuration.md:Python 特有配置(兼容性标志、pyproject.toml、包及已确认可用列表、CPU 限制、.dev.vars、JS 打包规则、triggers.crons、测试设置)。
  • patterns.md:FFI 边界层、D1 行转换、队列消息处理、Static Assets 架构、Durable Objects(存储、alarms、WebSocket 休眠、出站 WS)、按 Isolate 初始化、request.js_object 解包、三级 mock 测试、无文件系统的 Jinja2、FastAPI ASGI 桥接。
  • gotchas.md:17 个 Python 特有问题的错误特征与修复方法。

技能还列出了若干反模式及正确写法:不要在业务逻辑中直接使用原始 JsProxy,应在边界处转换;向 JS 传 Python 字典时必须使用 dict_converter=Object.fromEntries,否则会生成 JS Map;不要在模块级使用 PRNG,否则会破坏 Wasm 快照并导致部署失败,应放入处理函数内;不要让 Static Assets 请求经过 Worker,应通过 wrangler.jsonc 配置让边缘直接服务;向 R2/KV 写入 Python bytes 时需先转换为 Uint8Array(to_js(bytes)),否则 PyProxy 会被拒绝。

适用场景

适用于需要在 Cloudflare Workers 上使用 Python 构建应用的开发者,尤其是需要处理 Python 与 JavaScript 之间 FFI 边界、使用 D1/KV/Queues/Durable Objects 等绑定、进行单元测试或排查 Python 特有错误的情况。

限制

当前资料未提供该技能的收费、价格、平台支持范围、效果或使用步骤等具体信息,这些内容暂未提供。