描述問題/錯誤/疑問
大家好,
我遇到了排程觸發器產生過多執行次數的問題,不知道該如何修復。
我的工作流程做什麼:
我有一個客戶支援自動化系統。當客戶提交支援請求時,資料進入 Google 表單。經理隨後審查該請求並填入「決定」欄位(接受/拒絕/上報)。
我有 3 個工作流程,每個都每 2 分鐘輪詢 Google 表單的不同分頁:
- 排程觸發器(每 2 分鐘)
- 從 Google 表單取得所有列
- 程式碼節點:篩選「決定」欄位剛填入且尚未處理的列
- 切換節點:根據決定值進行路由
- 操作:寄送電子郵件給客戶、更新表單狀態、建立支援票證等
所以大多數時候,工作流程運行、找不到要做的事就停止。只有當經理填入決定時,它才會真正執行動作。
問題:
我看到執行次數堆積得太多了。當伺服器重新啟動時,我會得到一次巨大的突發 — 數十次執行都在相同的時間戳記,混合了錯誤(~40 秒)和已取消(~1 分 7 秒)。
我認為 n8n 可能在嘗試「追上」伺服器宕機期間所有遺漏的排程執行。或者可能是觸發器在前一次執行完成前多次並行觸發。
我的問題:
- 如何防止啟動時的執行突發?
- 有辦法限制每個工作流程的並行執行次數嗎?
- 使用排程觸發器每 2 分鐘輪詢一次 Google 表單是一個好方法,還是有更好的模式適合這個用例?
謝謝!
錯誤訊息是什麼(如果有的話)?
請分享您的工作流程
分享最後一個節點傳回的輸出
關於您的 n8n 設定的資訊
@Arthur_Mascot 啟動時遺漏的運行會被補上 — 當 n8n 重新啟動時,排程觸發器預設會為每個遺漏的間隔執行一次。觸發節點本身有設定可以停用這個行為。不過在講細節之前 — 你用的是 n8n cloud 還是自託管?並行執行的設定在不同環境中有所不同。還有一點值得提醒:Google Sheets 有原生的觸發節點操作可以監控列的變化,效率遠高於每 2 分鐘輪詢一次,但前提是你的版本有公開這個功能。
我猜你在使用主要模式,@Arthur_Mascot 。
如果你改用佇列模式呢?
嗨 @Arthur_Mascot 歡迎!
你有試過移除整個工作流程,然後重新匯入它嗎?這樣它會獲得一個新的 ID,幽靈執行就會被清除。我想你可以在你的執行個體中減少並行執行計數,而不是按工作流程。
看你的工作流程,更好的選擇是新增一個 Google 試算表觸發器,而不是每次都輪詢所有內容,並在中間新增等待節點
關於 Schedule Trigger 上的參數 — 停用補上失誤執行的設定究竟在哪裡?我在節點的設定中看不到。
也很有興趣了解 Google Sheets Trigger 的做法 — 正好我的工作流程就是在「決策」欄上篩選:它取得所有狀態為 en_attente_validation 的列,並檢查「決策」欄是否已填入。原生的觸發器能否特別監控這一列,並只在新增值到該欄時才觸發?
歡迎 @Arthur_Mascot 加入我們的社群!我是 Jay,我是 n8n 認證創作者。
若要停用趕進度功能,請開啟你的 Schedule Trigger 節點,並在節點設定面板中尋找「Fire on startup catch-up」切換開關。關閉該選項,n8n 就會停止在重新啟動時嘗試執行所有錯過的時間間隔。由於你每 2 分鐘輪詢一次,而趕進度突增對於支援佇列沒有意義,這是適合你的使用案例的最簡潔修復。
@Arthur_Mascot 你正在使用哪個版本?這是 v2.21.7
@Arthur_Mascot 另一個要點是,佇列設定不是在節點上,而是在工作流程的設定中。
看看這份文件
設定佇列模式 | n8n 文件
@Arthur_Mascot 「Fire on startup catch-up」選項位於 Schedule Trigger 節點的 Settings 分頁中(不是 Parameters 分頁)。開啟該節點,切換到頂部的 Settings 分頁,你應該會在那裡看到它。如果你使用的是 v2.21.7 版本但看不到該選項,該切換開關可能是在後續版本中新增的 - 在這種情況下,替代方案是在環境變數中將 WORKFLOWS_QUEUE_STARTUP 設定為 false,或者在低活動時段重新啟動 n8n,然後在重啟後手動觸發一次工作流程。