Cloudflare announced Python Workers general availability on September 21, 2026. For an API, webhook or AI service integration, it is worth considering. But it is not the same as renting a Linux server: understanding that distinction can save you from a migration that creates more work than it removes.
Short answer: consider Python Workers for small endpoints and compatible applications you want to run without managing an operating system. Choose a VPS when you need control over the environment, persistent processes or dependencies that do not work in WebAssembly.
What changes with Python Workers GA?
Python moves beyond beta on Workers. The announcement includes FastAPI, Django and Flask support, plus integration with Cloudflare services. The runtime uses CPython through Pyodide and WebAssembly; it is not a virtual machine running a complete Linux distribution. Cloudflare's official announcement.
Framework support does not guarantee that your application will work unchanged. Pure Python packages are a favorable starting point; native extensions need a compatible WebAssembly distribution, such as supported PyEmscripten wheels, or availability in Pyodide. Audit direct and transitive dependencies before moving production. Package compatibility documentation.
Python Workers vs VPS: which fits your application?
| Requirement | Python Workers | Linux VPS |
|---|---|---|
| API with irregular traffic | A good candidate if dependencies fit. | You size and operate the service. |
| System control | Managed runtime, not a Linux machine with root access. | Control over the operating system and its services. |
| Resident processes or system tools | May require an architectural redesign. | A more direct fit for daemons and compatible executables. |
| Maintenance | Less operating-system work; application security remains your responsibility. | Plan for patching, monitoring and backups. |
| Budget | Requests, CPU and additional services affect the bill. | Starts with the selected plan; scaling and operations also cost money. |
There is no universal performance winner. An API close to a visitor can still be slow when it queries a distant database. A useful comparison measures the complete request path, not just an empty response.
Limits to check before migrating
Workers provides 128 MB per isolate, shared across the requests it handles, not a fresh allocation for each request. For HTTP, Free allows 10 ms of CPU per invocation; Paid defaults to 30 seconds and can be configured up to 5 minutes. CPU time is different from time spent waiting for network responses. Official limits.
I would not move a memory-heavy file processing job without testing its peak usage. Calling an AI model from Python also does not mean inference is included: the model provider may charge separately.
Pricing: three reproducible estimates
Workers Paid starts at US$5/month, including 10 million requests and 30 million CPU milliseconds. Additional millions cost US$0.30 and US$0.02 respectively. Official pricing checked September 22, 2026.
| Requests/month | Total CPU at 10 ms/request | Monthly estimate |
|---|---|---|
| 1 million | 10 million ms | US$5.00 |
| 10 million | 100 million ms | US$6.40 |
| 30 million | 300 million ms | US$16.40 |
These are calculations, not benchmarks. They assume 10 ms average CPU and the included allowances available for this workload. Taxes, storage, databases, billable logs and AI are excluded. The third row is US$5 + US$6 in excess requests + US$5.40 in excess CPU. If your code uses ten times more CPU, the same visitor count will not keep this budget.
A minimal FastAPI endpoint
This entry file exposes a health check. It demonstrates the structure; it is not a complete project or a performance test:
Does your Python application need a full server?
If your project needs control over its environment and its own services, compare Teramont VPS plans and size your resources for your actual workload.


from fastapi import FastAPI
from workers import asgi
app = FastAPI()
@app.get("/health")
async def health():
return {"status": "ok", "service": "catalog-api"}
Default = asgi.entrypoint(app)You still need dependencies and Worker configuration. Follow the official FastAPI guide to prepare those files and run locally. The language label on the block's first line is not part of the Python file.
What to test before choosing
- Install and exercise every dependency, including authentication and data access.
- Use representative requests: large payloads, failures and external API calls.
- Measure p50/p95 latency, errors, CPU and memory with comparable load and data placement.
- Check retries and idempotency to prevent duplicate charges or actions.
- Move one small route first and keep a rollback path.
Our recommendation: start with Workers when it simplifies a compatible API. Choose a VPS when control and process requirements matter more than abstracting away servers. A hybrid is also possible: HTTP entry points on Workers and specialized work on a VPS. Let your dependencies and measurements decide, not a generic promise of speed.









