用 Python 编写的 Workers 由 Pyodide ↗ 执行。
Pyodide 是 CPython 到 WebAssembly 的移植——在大多数情况下,它的行为与 CPython ↗(Python 的参考实现——通常简称为 "Python")相同。 针对 Pyodide 运行 CPython 测试套件时,大部分测试都通过了。在大多数情况下,你不需要担心行为差异。
Python Workers 中提供完整的 Python 标准库 ↗,但有以下例外:
以下模块在 Python Workers 中不可用:
- curses
- dbm
- ensurepip
- fcntl
- grp
- idlelib
- lib2to3
- msvcrt
- pwd
- resource
- syslog
- termios
- tkinter
- turtle.py
- turtledemo
- venv
- winreg
- winsound
以下模块可以导入,但由于 WebAssembly VM 的限制而无法正常工作。
- multiprocessing
- threading
以下模块存在,但由于依赖已移除的 termios 包而无法导入:
- pty
- tty
decimal:decimal 模块有 C(_decimal)和 Python(_pydecimal)实现,功能相同。只有 C 实现可用(编译为 WebAssembly)pydoc:Python 内置函数的帮助消息不可用webbrowser:原始 webbrowser 模块不可用。
Python Workers 可以访问临时的内存文件系统。你可以使用标准 Python 文件 I/O(例如 open()、pathlib.Path)读写文件,但当 Worker isolate 被销毁时,所有数据都会丢失。文件系统不在不同的 isolate 实例之间共享。
这对于临时文件操作很有用,但不应依赖它进行持久存储。使用 KV、R2 或 Durable Objects 进行持久存储。