凌晨五點,資料只填了一半
每天凌晨五點,收集機器人會自動抓取AI產業消息與市場資料。前一天都還正常,可是今天早上打開資訊流一看,120筆項目裡只有54筆被填滿。
「少了一半,好像請求中途斷掉了。」羅波打開日誌時這麼說。
原因意外地簡單。凌晨時段同時呼叫好幾個來源,結果其中一個API觸發了請求限制,之後的請求就悄悄失敗、被略過了。連錯誤紀錄都沒留下,才拖到現在才發現。
Before / After
Before:五個來源同時並行呼叫,失敗時沒有任何通知
After:呼叫之間加入間隔,失敗的請求最多自動重試三次。重試仍失敗就發Slack通知
for source in sources:
for attempt in range(3):
result = fetch(source)
if result.ok:
break
wait(2)
if not result.ok:
notify_slack(source)
隔天凌晨,資訊流的120筆裡填滿了118筆。剩下2筆收到了Slack通知,由負責人手動確認。
「所謂完全自動化,原來是連失敗都要自動發現。」溫蒂事後這麼說。
問題起於一個小小的收集機器人,之後我們把同樣的重試邏輯加進了所有自動化流程裡。就算是非工程師打造的自動化,不讓失敗悄悄溜走,才是真正的關鍵。麥斯後來也順手檢查了Mac mini上其他排程,確認沒有同樣的漏洞。