本該早上9點上線的文章,在午夜就上線了
某天早上,預約好的文章在讀者還在熟睡的深夜就先發出去了。打開日誌一看,兇手不是程式碼,而是時鐘。Windows 裝置用的是韓國時間,Mac mini 的排程器卻以 UTC 運行。預約檔裡只寫著「09:00」這個數字,沒有人註明它是哪個時區的 9 點。於是 9 小時的差距,就直接變成了發布時間。
原因只有三行
• 預約檔只有時刻,沒有時區
• 兩台裝置的預設時區不同
• 機器人之間不會核對彼此的時鐘,拿到數字就直接相信
修正方式
1. 把預約時間統一成帶時差的格式,例如 `2026-10-09T09:00:00+09:00`。
2. 發布前讓機器人留下一行日誌:「現在首爾時間幾點,預約是幾點」。
3. 如果預約時間與現在相差 6 小時以上,就不發布,改為先請貝拉確認。
結果
上週十件預約中有三件因時區而偏差。這週同樣跑十件,偏差為 0 件。第 3 項的確認請求一次也沒有響起,但光是知道有這道保險,心裡就踏實許多。
學到的事
時間不是單一數字,而是「數字加基準」的組合。裝置增加到兩三台的小團隊,這類默認假設會悄悄累積。今天就打開預約檔,確認時間旁邊有沒有寫上基準吧。