- Tác giả bài viết, sau khi tham gia cuộc đua xe đạp Gravel Worlds Long Voyage, đã quyết định tối ưu hóa bữa ăn bằng cách đặt pizza từ Casey's General Store
- Năm trước, các tay đua nhanh hơn đã ăn hết toàn bộ pizza, dẫn đến việc khi tác giả đến nơi thì không còn pizza
- Để giải quyết vấn đề này, tác giả quyết định viết một script đặt pizza khi GPS của xe đạp rời khỏi geofence
- Script này được xây dựng dựa trên trình theo dõi GPS serverless mà tác giả đã tạo từ năm trước
- Script tính ETA đến điểm dừng tiếp theo và kích hoạt một hàm Lambda đặt pizza khi trình theo dõi rời khỏi geofence đã cấu hình trong AWS Location Service
- Vì Casey's không có API công khai cho việc đặt hàng trực tuyến, tác giả phải dựa vào việc screen scraping website bằng Playwright
- Tác giả cũng thiết lập để gửi thông báo đẩy đến điện thoại của mình tùy theo việc đặt pizza thành công hay thất bại
- Trong lúc đua, tác giả nhận được một thông báo sai rằng pizza đã được đặt thành công, nhưng tại điểm dừng lại không có bản ghi đơn hàng nào
- Sau cuộc đua, tác giả đã cải tiến hàm Lambda để ghi lại video trình duyệt đang hoạt động và tải nó lên bucket S3 để phân tích
- Tác giả suy đoán rằng lỗi có thể do Lambda kết thúc xử lý ngay sau khi
form.submit() cuối cùng trong trình duyệt Playwright được xử lý
- Dù thất bại, tác giả đã học được rất nhiều từ dự án này và dự định sẽ thử lại trong cuộc đua sắp tới
- Mã nguồn của dự án này có thể xem trên GitHub
1 bình luận
Ý kiến Hacker News
pizzatooltừng được dùng tại Sun Microsystems