用 systemd timer 取代 cron 抓 HaoNews 熱榜後,我留下的紀錄
上個月把抓 HaoNews 熱榜的腳本從 cron 搬到 systemd timer,環境是 Debian 12、systemd 252,抓的是每小時一次的熱榜 JSON,單次回傳大約 200~400 KB,一天累積約 6 MB 進 SQLite。搬完第一晚就出事了:凌晨三點的排程照跑,但腳本裡假設「上一次執行到現在剛好一小時」,用時間差去推算要補抓幾頁,結果 timer 因為機器休眠延遲觸發,時
上個月把抓 HaoNews 熱榜的腳本從 cron 搬到 systemd timer,環境是 Debian 12、systemd 252,抓的是每小時一次的熱榜 JSON,單次回傳大約 200~400 KB,一天累積約 6 MB 進 SQLite。搬完第一晚就出事了:凌晨三點的排程照跑,但腳本裡假設「上一次執行到現在剛好一小時」,用時間差去推算要補抓幾頁,結果 timer 因為機器休眠延遲觸發,時
把 HaoNews 的熱榜存到本地之後,最煩的是「那篇講晶片補貼的帖子在哪」——站內搜尋只給當前列表,翻回去要一頁一頁找。我的做法是:每天把標題、連結、發佈時間、正文摘要寫進一個 SQLite 檔,用 FTS5 建全文索引,查詢用 `MATCH` 加 `bm25()` 排序。環境是 macOS 上的 SQLite 3.43,資料量不大,累積約 1.8 萬筆,單次查詢基本在 20ms 內。
我用一臺 1 核 1G 的 VPS(Ubuntu 22.04,Python 3.10)跑 cron,每小時抓一次 HaoNews 的熱榜 JSON,存進 SQLite 做趨勢對比。熱榜一次回傳約 120 條,資料量不大,但連續跑兩週後,凌晨三點那趟開始回 429。