代理工作程序即使有指數退避,也可能因秒被當成毫秒、HTTP日期套用本機時區,或長等待被截成較短上限而提前重試。本文替獲授權的唯讀任務驗收Retry-After解析及排程交接;合成案例不代表98IP或目標服務的實測行為。

回應計時器和日曆一起進入等待佇列,工作只在約定時間邊界後釋放

1. 先分清等待與重試資格

Retry-After可提供非負整數秒數或HTTP日期,常見於服務不可用、限流及部分轉址。此處限定自有503夾具。另行決定是否允許重試、剩餘時長與次數,以及暫停涵蓋的路由或帳戶。

標頭不能證明中斷的寫入未提交,購買等狀態異動必須另有防重複契約。重試責任、抖動與整體負載預算參考代理重試風暴指南。本篇聚焦下一次真實發送有沒有遵守最早執行時間。

2. 明確定義解析輸出

保存有長度限制的去識別化原值、收件時刻及分類:有效秒數、有效HTTP日期、缺少、無效或超出支援範圍。不要把所有失敗當零。使用HTTP日期解析器,不用本地通用日期猜測。HTTP日期包含逗號,不能直接按逗號切欄位;多個含糊值須有明確無效輸入策略。

秒數自收到回應起算,排程邊界明列單位。先檢查數值溢位,再換算毫秒或奈秒。零是有效值,卻不允許無預算忙迴圈。空白、負數、小數與任意文字須進入規定回退或停止分支,不能意外立刻送出。

3. 用可控制時鐘查真正的發送邊界

  1. 本機或自有預備夾具先傳受控503,再提供唯讀成功;回應和後續發送各有關聯識別。
  2. 將可控制時鐘注入解析器及排程測試,記錄收件牆上時間與單調時鐘點,不用真等數小時。
  3. 有效2秒延遲,在邊界前斷言沒有網路發送,到邊界後最多允許一次合資格嘗試。觀察真實出站,不只看計時回呼。
  4. 使用比受控收件時間晚2秒的有效GMT HTTP日期,在不同本機時區重跑,得到同一絕對時刻。
  5. 接受等待後前移或後移牆上時間;程序內時長仍依單調截止點,不因系統時間跳動提早到期。

絕對日期在收件時以可信牆上時鐘換算剩餘時長。同步狀態不確定時標記並暫停,或採明文保守政策。不要默默將回應Date當精確校時:傳輸延遲及快取回應會影響判讀。過去日期不新增未來等待,但一般重試與並行預算仍有效。

4. 測試錯誤輸入與期限衝突

  • 沒有欄位:走既定普通重試政策,不虛構伺服器等待。
  • 空字串、-1、0.5或無意義日期:記為無效,執行選定的安全回退或停止。
  • 超算術或計時範圍的大整數:不得回繞、變負或立即觸發,交能表示邊界的排程器,或停止待查。
  • 有效等待超過工作期限:不能縮短來配合期限,應延後或標為逾期,邊界前不送出。
  • 有效等待超過程序計時器上限:持久排程保留完整時間或停止,計時器上限不是提前重試許可。

這是系統驗收政策,並非宣稱HTTP訂有統一的壞標頭復原算法。明列支援、拒絕及需介入案例。若另有本地退避或有界非負抖動,實際發送不得早於伺服器邊界及本地政策各自允許的時刻。

5. 驗證佇列、重啟與取消

在非秘密工作資料保存操作ID、嘗試序號、範圍、解析決定、最早合資格UTC時刻、原收件資訊及期限。單調時鐘點屬於原程序,重啟不能直接沿用;以可信時鐘重建、再查期限,發送前取得唯一工作租約。

等待中途停止再以同一操作重啟,驗證不新增重複工作、不重設立即執行、不丟失伺服器邊界。測等待時取消和取消後遲到回呼,均保持不活動。兩個程序在到期點競爭時,依租約契約只發送一次。

單一工作等待不會自動協調共用目標或帳戶的全部程序。依約定暫停範圍測一個受影響伴隨工作及一個無關健康工作。不可藉換出口或憑證逃避暫停;到期只是重新評估資格,不能蓋過後續關機、取消或拒絕存取。

6. 用98IP比較自有測試端點

本地測試過關後,於核准基準與住宅代理路徑跑短時案例。需要指定地區出口時,查98IP動態住宅IP產品頁,依設定文件及帳戶取得支援參數。固定地區和工作階段策略,確認實際出口。

比較自有接收端送出的欄位、用戶端解析及下一次請求抵達時刻。收到標頭不代表SDK遵守。本文未承諾相容性、計時精度、吞吐或失敗計費結果。使用短合成延遲、有界流量及獲授權資料,核對實際用量。

7. 放行清單與常見問題

  • 秒數與HTTP日期單位清楚,跨時區保留預期邊界。
  • 無效值、溢位、缺欄位與時鐘不確定各有明訂處理。
  • 工作期限和計時上限不縮短有效伺服器暫停。
  • 重啟、取消、競爭及範圍伴隨工作有接收端觀察。
  • 保留操作識別和時間決定,不記代理密碼、授權標頭、Cookie或客戶資料。

只等本地最大值可以嗎? 若早於有效伺服器邊界,不行。持久延後或終止本次嘗試,不提早發送。

過去日期等於立刻無限重試嗎? 不等於。它不增加正的未來等待,資格、一般退避、次數及取消仍控制工作。

每次喚醒都重等完整秒數嗎? 應保留原邊界。每次重加可能永遠延後,重啟後丟棄又可能提早。