惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
L
LangChain Blog
C
Check Point Blog
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
美团技术团队
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
S
SegmentFault 最新的问题
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
腾讯CDC
B
Blog
G
Google Developers Blog
The Cloudflare Blog
P
Proofpoint News Feed

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare workers不完全指南 使用n8n创作短篇小说 水果风波:信任的代价 用Python将PDF文件转换成图片 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 白嫖免费的Rust在线运行时shuttle RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名 《英语语法分解大全》读后感
Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust
About 又耳宁 关于技术与股票的一些零碎想法 · 2025-07-23 · via 又耳笔记

之前的文章:

  1. Cloudflare workers不完全指南"
  2. Cloudflare Workers实战(一):随心所欲操作客户端请求
  3. Cloudflare Workers实战(二):动态修改后端响应
  4. Cloudflare Workers实战(三):实现认证、重定向与缓存
  5. Cloudflare Workers实战(四):托管和分发静态文件

如果你看过这个系列的其他文章那么基本上可以玩转workers,唯一的痛点可能是你不擅长或者不喜欢javascript,不喜欢javascript也没关系,只有用其他编程语言呗,如果你喜欢python和rust的话!

我们可以直接将fastapi的代码部署到workres上面,除了用不了自己的数据库,基本上和运行在自己后端没有啥区别

值的注意的是:不是所有标准库都能使用,详情参考https://developers.cloudflare.com/workers/languages/python/stdlib/

下面的示例来自官方示例。

  1. 创建Python Worker项目
git clone https://github.com/cloudflare/python-workers-examples
cd python-workers-examples/03-fastapi
npx wrangler@latest dev
  1. 编写Python代码 (src/main.py)
from fastapi import FastAPI, Request
from pydantic import BaseModel

async def on_fetch(request, env):
    import asgi

    return await asgi.fetch(app, request, env)

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

@app.get("/env")
async def root(req: Request):
    env = req.scope["env"]
    return {"message": "Here is an example of getting an environment variable: " + env.MESSAGE}

class Item(BaseModel):
    name: str
    description: str | None = None
    price: float
    tax: float | None = None

@app.post("/items/")
async def create_item(item: Item):
    return item

@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: str | None = None):
    result = {"item_id": item_id, **item.dict()}
    if q:
        result.update({"q": q})
    return result

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

妈妈再也不用担心我不会写javascript来。

Rust登场:为了极致的性能与安全

如果说Python给Workers带来了亲和力,那Rust带来的就是战斗力。这门语言,就是为了性能、可靠和安全而生的。它那套独特的“所有权”和“借用检查”机制,能在编译的时候就帮你消灭掉一大堆内存管理的坑爹bug。用它来写真正“硬核”的、对性能和安全要求到变态级别的服务,再合适不过了。

写rust的困难之处在于你首先要打败编译器,桀桀桀桀桀桀~~

用Rust写Worker,爽在哪里?

  • 快,就一个字:编译到Wasm的Rust代码,跑起来跟飞一样,冷启动时间和原生JS有一拼。
  • 稳,如老狗:没有垃圾回收的烦恼,内存安全由编译器帮你保证,让你高枕无忧。
  • 生态强无敌:Rust的包管理器Cargo,里面的高质量库(他们叫crates)多到你用不过来。

示例:一个基础的Rust Worker

  1. 创建Rust Worker项目: Wrangler同样为Rust提供了一键式的项目模板。
    wrangler init my-rust-worker --type=rust
    
  2. 编写Rust代码 (src/lib.rs)
// src/lib.rs
use worker::*

#[event(fetch)]
pub async fn main(req: Request, env: Env, _ctx: Context) -> Result<Response> {
    // 获取请求的路径
    let path = req.path();

    // 构造一个简单的响应字符串
    let response_text = format!("Hello from Rust Worker! You requested: {}", path);

    // 返回一个Response对象
    Response::ok(response_text)
}

Rust社区已经为Workers提供了强大的支持。你可以使用worker-rs这个crate来方便地与Workers运行时API交互。更进一步,像Axum这样的Rust Web框架,也可以通过适配层在Workers上运行,让你能够构建复杂且高性能的边缘应用。

总结

希望这个系列的文章对你有帮助,也让我自己写了一些之前没写过的代码。给赛博佛祖敬礼。