繁体   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