Hoofdstuk 1
Als de server nieuws heeft
Welkom bij de cursus
Hoi, ik ben Erik. Ik schrijf en onderhoud deze cursus, net als de rest van Python Land.
In
Wat je gaat bouwen
De cursus volgt één project: een scorebord voor een quizavond. Meerdere kijkers zien elke scorewijziging zodra die gebeurt, en één scorebijhouder, die een geheim token heeft, is de enige die een score mag veranderen. Elk bericht is een klein stukje type, en de berichten van de server hebben ook een version.
De cursus bestaat uit twee helften.
| Hoofdstukken | Wat je bouwt |
|---|---|
| 1 | waarom WebSockets bestaan: wat polling kost, en wat twee omwegen oplossen |
| 2 tot en met 5 | de |
| 6 tot en met 10 | het scorebord op de bibliotheek websockets: veel kijkers, trage en verloren verbindingen, een tokencontrole, en daarna een geteste server en client |
| 11 | een voorproefje van async: dezelfde handler gelezen en herschreven met async def |
| 12 | hoe je verder kunt |
De code die je in hoofdstuk 2 tot en met 5 schrijft, is een codec om van te leren: hij laat je elke byte zien, zodat je weet wat een bibliotheek voor je doet, en hij is niet bedoeld om er een te vervangen. Vanaf hoofdstuk 6 gebruik je in plaats daarvan het pakket websockets. Het is al geïnstalleerd in je sandbox.
Waar je code draait
Geen browser en geen openbaar adres zal ooit verbinding maken met de code die je op deze site schrijft. Je sandbox heeft geen route naar het openbare internet, en niets daarbuiten kan erin, dus geen enkele les in deze cursus neemt contact op met een echte website.
Elke live run gebeurt in plaats daarvan op één plek: binnen één Python-programma, op het 127.0.0.1. Dat programma start de server en zijn clients, laat ze praten, en stopt met opzet na een vast aantal berichten of na een deadline. Echte projecten testen WebSocket-code op dezelfde manier, omdat een test die een tweede machine of een browser nodig heeft traag en kwetsbaar is. Als een les je werk controleert, geeft ze je
Dit hoofdstuk opent helemaal geen verbinding; elk getal erin komt uit een kleine simulatie die je in je browser kunt draaien.
Waar accepteren de WebSocket-servers die je in deze cursus schrijft verbindingen?
Wat je meebrengt
Je hebt HTTP with Python nodig en, via die cursus, Networks with Python. De lessen verwachten dat je:
een HTTP-verzoek en -antwoord als bytes kunt schrijven, en een kop kunt parsen met
split;van een
kunt lezen in een ontvangstbuffer, met read_exactvoor een bekend aantal bytes enread_headvoor alles tot aan de lege regel;gehele getallen kunt inpakken en uitpakken met
structin; een server op
127.0.0.1kunt draaien die met opzet stopt, met een thread per verbinding;socketcode kunt testen door je functies een fake socket te geven in plaats van een netwerk;
base64enhashlibkunt gebruiken, zoals je deed voor Basic-authenticatie en.
Python Fundamentals II wordt aangeraden, maar is niet verplicht. Sommige meegeleverde bestanden bevatten class-regels en regels die met @ beginnen; de lessen leggen uit hoe je ze leest, en geen enkele oefening vraagt je om een van de twee te schrijven.
Maak kennis met Monty
Monty is de leergids van Python Land en staat naast elke les. Vraag om een tweede uitleg, een hint die het antwoord niet weggeeft, of hulp bij het lezen van een foutmelding.
Als je bent ingelogd, krijg je met een gratis account 5 keer Monty-hulp per dag, gedeeld over alle cursussen. Een goede eerste vraag hier:
Leg me in een paar zinnen nog eens uit wat
read_headdeed in HTTP with Python en waarom het de bytes na de lege regel bewaarde.
Hoofdstuk 2 leunt op die functie.
Met Guided krijg je tot 50 keer Monty-hulp per dag. Vragen, hints, foutuitleg, extra oefeningen en codefeedback delen dezelfde dagelijkse limiet. De teller laat zien hoeveel hulp je nog hebt en wanneer de limiet wordt vernieuwd. Elke les en gewone herkansing van een oefening blijft gratis.
De volgende les probeert de meest voor de hand liggende manier om een scorebord bij te houden met niets anders dan verzoeken en antwoorden, en meet wat dat kost.