O que são os Python Workers

Python Workers e um recurso da Cloudflare que permite escrever e rodar código Python diretamente na rede de borda (edge) da empresa, no mesmo modelo já usado pelos Workers em JavaScript desde 2017.

A Cloudflare anunciou o recurso em versão beta ha alguns anos, mas após um período de testes e ajustes de performance, o suporte a Python chegou a disponibilidade geral (GA), o que significa que agora pode ser usado em produção com garantias de suporte oficial.

O problema que isso resolve e direto: times que já usam Python no backend, em ciência de dados ou em automações, antes precisavam reescrever lógica em JavaScript ou TypeScript para rodar na borda da Cloudflare. Agora, o mesmo código Python pode rodar mais perto do usuário final, reduzindo latência.

Como funciona

Os Workers da Cloudflare rodam sobre o V8 isolates, uma tecnologia de isolamento leve que evita o custo de subir um container ou uma máquina virtual completa para cada requisição.

Para Python, a Cloudflare usa o Pyodide, uma distribuição de Python compilada para WebAssembly, permitindo que o interpretador Python rode dentro do mesmo ambiente V8 isolate usado pelos Workers em JavaScript.

Na prática, isso significa que o código Python e executado em mais de 300 datacenters espalhados pelo mundo, escolhendo automaticamente o mais próximo do usuário que fez a requisição, sem que o desenvolvedor precise gerenciar servidores ou regiões manualmente.

💡
Dica

Como o Pyodide roda sobre WebAssembly, nem toda biblioteca Python com extensões em C funciona de forma direta. Vale checar a lista de pacotes suportados antes de migrar um projeto grande.

Principais recursos

  • Suporte a bibliotecas populares: pacotes como FastAPI, NumPy e outros já compilados para WebAssembly funcionam nos Workers.
  • Integração nativa com produtos Cloudflare: acesso direto a KV, R2, D1 e Durable Objects a partir do código Python.
  • Cold start reduzido: por rodar em isolates e não em containers, o tempo de inicialização e bem menor que em funções serverless tradicionais.
  • Deploy simples via Wrangler: a mesma CLI usada para Workers em JavaScript funciona para projetos Python.
  • Modelo de cobrança por requisição: segue o mesmo esquema de preços dos Workers convencionais, sem cobrança separada para Python.

Como começar: instalação ou acesso passo a passo

Para começar, e necessário ter uma conta Cloudflare e a CLI Wrangler instalada localmente.

npm install -g wrangler
wrangler init meu-worker-Python --type Python

O comando cria a estrutura básica do projeto, incluindo o arquivo de entrada em Python e o arquivo de configuração wrangler.toml, onde ficam definidas rotas, variáveis de ambiente e bindings para outros produtos Cloudflare.

Depois de escrever a lógica no arquivo principal, o deploy e feito com um único comando, que pública o Worker direto na rede global da Cloudflare.

wrangler deploy

Exemplo prático

Um caso simples e um endpoint que recebe uma requisição HTTP e retorna dados processados em Python, como uma validação de CPF ou um calculo estatístico rápido.

from js import Response

async def on_fetch(request, env):
    dados = await request.json()
    resultado = sum(dados.get('valores', []))
    return Response.json({'soma': resultado})

Esse Worker roda em qualquer datacenter da Cloudflare mais próximo do cliente que fez a chamada, sem que o time precise configurar balanceamento de carga ou replicas manualmente.

Comparação com alternativas

AWS Lambda também roda Python nativamente, mas com cold start maior e sem a distribuição automática em centenas de pontos de presença como a Cloudflare oferece.

Vercel Functions e mais focado no ecossistema Next.js e tem suporte a Python mais limitado, geralmente via runtime separado.

Deno Deploy concorre diretamente no espaço de edge computing, mas sua linguagem principal continua sendo JavaScript e TypeScript, sem foco em Python.

O diferencial da Cloudflare e justamente trazer Python para o mesmo modelo de isolates leves e distribuição global que já tornou os Workers populares para JavaScript.

Pontos positivos e limitações

O ponto forte e claro: latência baixa, distribuição global automática e reaproveitamento de conhecimento Python que times de backend já possuem.

A limitação mais citada e a compatibilidade de bibliotecas. Pacotes com dependências nativas complexas, que exigem compilação específica, podem não funcionar ou exigir versões adaptadas para WebAssembly.

Também existe limite de tempo de CPU por requisição, um padrão em toda a plataforma Workers, o que torna a solução inadequada para processamento pesado ou de longa duração.

Casos de uso reais

APIs leves de validação: times que já tem regras de negócio escritas em Python podem expor endpoints de validação sem duplicar lógica em outra linguagem.

Middleware de borda: transformação de dados, roteamento condicional ou enriquecimento de requisições antes de chegar ao backend principal.

Prototipagem rápida: equipes de dados que já escrevem scripts em Python podem transformar esses scripts em endpoints públicos sem aprender uma nova stack.

Integração com IA: pre-processamento de dados antes de enviar para um modelo, aproveitando bibliotecas Python de manipulação de texto já conhecidas do time.

Dicas e boas práticas

🚀
Pro tip

Use bindings nativos da Cloudflare, como KV para cache e D1 para dados relacionais, em vez de chamar serviços externos, para manter a latência baixa em toda a cadeia.

💡
Dica

Teste localmente com wrangler dev antes de publicar, simulando o ambiente de produção sem custo de deploy.

🔴
Cuidado

Não assuma que toda biblioteca do PyPI vai funcionar sem ajustes. Valide a compatibilidade com Pyodide antes de migrar um projeto inteiro para Python Workers.

Vale a pena?

Para times que já usam JavaScript nos Workers e não tem motivo forte para trocar, a migração para Python não e prioridade.

Para equipes com forte base em Python, que querem aproveitar a distribuição global da Cloudflare sem reescrever lógica de negócio, o recurso agora em GA e uma opcao madura e pronta para produção.

O próximo passo e criar um projeto de teste com o Wrangler, migrar uma função pequena e medir a latência real antes de decidir mover cargas maiores para a plataforma.