簡體   English   中英

定義delay_jobs依賴項

[英]Define delayed_jobs dependencies

我使用的是delayed_job ,對於其中的一些delayed_job ,需要在當前延遲之后執行,並且延遲很小。 此延遲來自我正在查詢的API的速率限制。

基本思路
這是我的工作限制:

      1s           1s
A1 --------> A2 --------> A3

      1s           1s
B1 --------> B2 --------> B3

最后,我希望此過程花費約2秒鍾的時間,例如:

           1s              1s
A1 -> B1 -----> B2 -> A2 ------> A3 -> B3

要么

           1s              1s
A1 -> B1 -----> A2 -> B2 ------> A3 -> B3

或遵循我的第一個約束條件的任何順序,但要有依賴關系和等待。

更多背景
我目前正在為Shopify開發一個應用程序。 每個Shopify的應用程序受每秒2個API調用的速率限制。
但是來自shopify的webhooks可以使我完成工作,每個商店每秒可以超過2個,因此我需要使用工作來處理它們。 然后,每個作業實際上向其API發送兩個請求。

考慮的方法
我可以使用第二個隊列,並使用after鈎子獲取下一個要為商店執行的作業,並使用run_at: 1.seconds.from_now將其添加到作業表中。 但是,我不太喜歡這個主意,因為我必須將perform參數存儲在表中,而不僅僅是調用perform_later方法。 另外,我真的想像這不是使用delay_job需要依賴項的第一個用例,因此,我敢肯定有一種我找不到的更好方法。

任何想法將不勝感激!

我根本不清楚您要做什么,但在大多數情況下(對我而言,這是一個很好的通用模式)(數百萬次,但有一些例外)...

  • 收到Webhook呼叫后,創建作業(如果尚未看到該Webhook呼叫),並盡快返回200狀態。 這讓Shopify感到高興,並阻止他們再次向您發送相同的提示。

  • MonkeyPatch ActiveResource可以檢查您應用程序中的左側信用標頭編號,以便在左側呼叫為零時輕松進入500毫秒等待狀態。 符咒效果... 2 /秒限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM