Rails是否有办法在特定时间发出请求?
我使用外部信用卡收费API,我想根据他们有多少推荐(每次10%,最多10次推荐)来调整每月订阅。 API内置了一个beta推荐系统,但它似乎并没有按我需要的方式工作。此外,还有太多未知因素,我现在还没有进入。我只是想让它起作用,而且由于我的系统非常简单,我宁愿手动完成。
每个订阅都有一个结算日期,我想要做的只是根据有多少活跃用户手动调整订阅价格,其中包含被收费用户的推荐代码。我想在他们开帐单之前将此请求发送给API。就像subscription.next_billing_at - 1.minute
周围的某个时间一样。
然后将subscription.price
设置为price - (price * (User.where(referral_code: current_user_code)).count / 10)
。
我知道这远非一种最佳方法,考虑到每月额外请求的数量,但由于我们现在很小,所以它不应该是一个问题。同样,它只是一个临时解决方案,所以我们现在可以运行。
答案 0 :(得分:0)
有两个选项直接回答您的问题。
编写一个rake任务,并通过Whenever gem每天使用cron运行它。如果采用这种方法,您必须让任务只加载所有订阅,这些订阅将在下一个周期中计费,并根据需要进行更新。
或者,使用类似Resque-scheduler的内容,这样您就可以在next_billing_at - 1.minute或其他地方运行某些任务。
但如果你很小,为什么不在每次使用回调创建新推介时更新价格呢?除非此API有特定的速率或查询限制,否则我怀疑卡处理器会受到您生成的流量的影响。当然,如果还有其他要求,例如推荐只适用于一个月或类似之后,你将会遇到前两个选项中的一个,而Cron + Rake任务可能就是那种情况下的最佳解决方案