Een Python-project kan nu verder dan de proefversie

Cloudflare verklaart Python Workers op 21 september algemeen beschikbaar. Python is daarmee volgens het bedrijf een volwaardig ondersteunde taal op zijn ontwikkelplatform. Webapps met onder meer FastAPI, Django en Flask kunnen er draaien en verbinding maken met diensten voor opslag, databases en AI. De stap volgt op een proefperiode van twee jaar. Voor iemand die Python leert of een kleine toepassing bouwt, is vooral de vraag interessant wat er met bestaande code gebeurt. Beschikbaarheid voor productie betekent namelijk niet dat iedere Python-toepassing ongewijzigd kan verhuizen.

De Python-code blijft Python

Onder de motorkap gebruikt Cloudflare Pyodide: de gebruikelijke Python-interpreter CPython, omgezet naar WebAssembly. Dat is een formaat waarmee programma’s binnen een afgeschermde uitvoeromgeving kunnen draaien. Je eigen Python-code wordt daarin geïnterpreteerd; Cloudflare vertaalt je hele project dus niet simpelweg naar JavaScript. De omgeving zit in een afzonderlijke V8-uitvoerinstantie. Bij het publiceren voert Cloudflare alvast de startcode en imports uit en bewaart een momentopname van het WebAssembly-geheugen. Bij een verzoek kan die opgeslagen beginstand worden geladen. Dat moet herhaald opstartwerk verminderen. Deze beschrijving verklaart de aanpak, maar geeft geen door Nxt gemeten wachttijd of snelheidswinst voor jouw toepassing.

Waarom een webapp kan meeverhuizen

Een webapp en de server die bezoekers ontvangt, hoeven niet één geheel te zijn. De Python-afspraak WSGI beschrijft al sinds 2010 een standaardverbinding tussen beide. De server geeft een verzoek door aan de toepassing; die levert haar antwoord terug. Een framework, zoals een verzameling hulpmiddelen voor webpagina’s, kan zo op verschillende servers worden aangesloten. Er kunnen bovendien tussenlagen zitten die verzoeken of antwoorden verwerken. Het doel van deze afspraak is uitwisselbaarheid, niet een nieuw framework maken. Nxt-duiding: zo’n gemeenschappelijke aansluiting helpt bij verhuizen, maar zegt nog niets over alle andere onderdelen waarop jouw app steunt. De database en gebruikte pakketten moeten afzonderlijk passen.

Samenwerken met JavaScript hoeft geen herschrijving te zijn

Niet alles in deze introductie is vandaag uitgevonden. Cloudflare beschreef op 3 augustus al hoe Python- en JavaScript-Workers elkaars functies kunnen aanroepen. Het platform verzorgt daarbij de vertaling tussen gegevenstypen: een datum of lijst uit de ene taal krijgt een passende vorm in de andere. Ook fouten worden teruggegeven aan de aanroeper. De verbinding moet wel worden ingesteld met een zogeheten service binding: een vastgelegde koppeling naar een andere Worker. Als voorbeeld gebruikt Cloudflare een Python-bibliotheek die programmacode van kleuren voorziet, aangeroepen vanuit JavaScript. Dat laat zien hoe een bestaand project een Python-onderdeel kan gebruiken zonder dat beide kanten dezelfde taal hoeven te krijgen.

De pakketlijst blijft een beslissende controle

Python-projecten gebruiken vaak pakketten van anderen, bijvoorbeeld voor een webinterface of gegevensverwerking. Cloudflare ondersteunt pakketten die volledig uit Python bestaan, geschikte PyEmscripten-pakketten op pakketwebsite PyPI en pakketten die in Pyodide zitten. Daarmee is niet ieder pakket automatisch beschikbaar. De documentatie waarschuwt dat ondersteuning voor WebAssembly nog in ontwikkeling is. De gebruikte afhankelijkheden zet je in het projectbestand pyproject.toml. Het gereedschap pywrangler voegt ze bij publicatie toe aan de Worker. Nxt-duiding: controleer daarom vooraf de echte pakketlijst van je project, inclusief benodigde onderdelen van die pakketten. Alleen weten dat het belangrijkste framework wordt ondersteund, is onvoldoende om de hele toepassing geschikt te verklaren.

Een standaard maakt geschikte bouwpakketten herkenbaar

Een pakket kan naast Python ook onderdelen in C, C++ of Rust bevatten. Daarvoor is een geschikte gebouwde versie nodig. PEP 783, in april 2026 aanvaard binnen Python, legt een herkenbare aanduiding voor zulke PyEmscripten-pakketten vast. Een wheel is hierbij een distributiepakket; het bijbehorende label vertelt bij welk platform de gebouwde onderdelen passen. De afspraak omvat onder meer de gebruikte compiler en instellingen voor het samenvoegen van code. Daardoor kunnen pakketbeheerders hun geschikte varianten via gewone pakketkanalen verspreiden. De standaard is dus ouder dan de aankondiging van vandaag. Ook maakt een afgesproken label op zichzelf nog niet alle bestaande pakketten geschikt: iemand moet de passende versie bouwen.

Een opgeslagen bestand is nog geen blijvende opslag

De standaardbibliotheek laat een belangrijke grens zien. Python Workers kunnen bestanden lezen en schrijven, maar die staan in een tijdelijk bestandssysteem in het geheugen. Zodra de betreffende uitvoerinstantie verdwijnt, verdwijnen de bestanden ook. Andere instanties delen dat bestandssysteem niet. Voor blijvende opslag verwijst Cloudflare naar afzonderlijke diensten, zoals R2, KV en Durable Objects. Ook de modules voor threads en meerdere processen zijn volgens deze documentatie wel te importeren, maar niet bruikbaar. Grafische bibliotheken zoals tkinter ontbreken. Nxt-duiding: een lokaal script dat zijn resultaten naast zichzelf opslaat of achtergrondprocessen start, vraagt daarom mogelijk om een andere opbouw voordat je het online zet.

Databases aansluiten heeft specifieke voorwaarden

Voor PostgreSQL en MySQL beschrijft Cloudflare een verbinding via Hyperdrive, een dienst die databaseverbindingen beheert. De Python-koppeling vereist een ingestelde compatibiliteitsdatum van 8 september 2026 of later. Cloudflare beveelt voor PostgreSQL de driver asyncpg aan en voor MySQL aiomysql; zulke drivers vertalen opdrachten van de app naar de database. De documentatie noemt daarnaast andere geteste drivers. Niet elke manier van databasegebruik past echter al. Van SQLAlchemy, een hulpmiddel om met databases te werken, worden nu alleen de synchrone varianten ondersteund. De asynchrone varianten missen ondersteuning voor greenlet. Nxt-duiding: controleer dus niet alleen de naam van je database, maar ook de driver en de manier waarop je app die aanroept.

Rekentijd en geheugen bepalen wat past

Ook een ondersteunde app moet binnen de platformgrenzen blijven. Cloudflare vermeldt 128 MB geheugen per uitvoerinstantie, inclusief JavaScript- en WebAssembly-geheugen. Eén instantie kan meerdere verzoeken tegelijk verwerken; dit is dus geen apart geheugenbudget voor iedere bezoeker. Voor HTTP-verzoeken biedt het gratis Workers-plan maximaal tien milliseconden CPU-tijd. Bij het betaalde plan is de standaard dertig seconden, instelbaar tot vijf minuten. Wachten op een netwerkantwoord telt niet mee als CPU-tijd. Nxt-duiding: een app die vooral gegevens ophaalt, belast die grens anders dan een zware lokale berekening. Meet daarom het eigen geheugengebruik en rekenwerk voordat je op basis van algemene beschikbaarheid een hostingkeuze maakt.

Verder bij de bron

Lees zelf de onderzoeken, uitleg en aankondigingen achter dit verhaal.

Bronnen en werkwijze