- Der Autor des Artikels nahm am Fahrradrennen Gravel Worlds Long Voyage teil und entschied sich, die Verpflegung durch eine Pizzabestellung bei Casey's General Store zu optimieren
- Im Vorjahr hatten die schnellen Fahrer bereits alle Pizzen gegessen, sodass bei der Ankunft keine Pizza mehr übrig war
- Um dieses Problem zu lösen, entschied er sich, ein Skript zu schreiben, das Pizza bestellt, wenn das Fahrrad-GPS eine Geofence-Zone verlässt
- Dieses Skript wurde auf einem serverlosen GPS-Tracker aufgebaut, den er im Vorjahr erstellt hatte
- Das Skript berechnet die ETA für den nächsten Stopp und löst eine Lambda-Funktion aus, die Pizza bestellt, sobald der Tracker eine in AWS Location konfigurierte Geofence-Zone verlässt
- Da Casey's keine öffentliche API für Online-Bestellungen hat, war er auf Web-Scraping der Website mit Playwright angewiesen
- Er richtete außerdem ein, dass je nach Erfolg oder Fehlschlag der Pizzabestellung Push-Benachrichtigungen an sein Handy gesendet werden
- Während des Rennens erhielt er fälschlicherweise eine Benachrichtigung, dass die Pizza erfolgreich bestellt worden sei, am Stopp gab es jedoch keinen Bestelleintrag
- Nach dem Rennen verbesserte er die Lambda-Funktion so, dass sie ein Video des laufenden Browsers aufzeichnet und zur Analyse in einen S3-Bucket hochlädt
- Er vermutet, dass der Fehler daran lag, dass Lambda die Verarbeitung unmittelbar nach dem abschließenden
form.submit() im Playwright-Browser beendete
- Trotz des Fehlschlags hat er bei diesem Projekt viel gelernt und plant, es bei kommenden Rennen erneut zu versuchen
- Der Code zu diesem Projekt ist auf GitHub verfügbar
1 Kommentare
Hacker-News-Kommentare