2015-07-19 126 views
0

Rails在某个时间发出请求的方式吗?设置发送HTTP请求的时间

我正在使用外部信用卡收费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

有两个选项可以直接回答你的问题。

编写一个rake任务,并通过Whenever gem与cron每天运行它。如果采取这种方法,您必须完成这项任务,才能加载所有将在下一周期开票的所有订阅,并根据需要进行更新。

或者,使用类似Resque-scheduler的东西,这将允许您在next_billing_at - 1.minute或其他东西上运行一些任务。

但是,如果你很小,为什么不每次使用回调创建新的引用时都要更新价格?除非在此API上有特定的速率或查询限制,否则我怀疑卡处理器将会受到您生成的流量的影响。当然,如果还有其他要求,例如推荐只适用于一个月或类似的事情之后,那么您将会遇到前两种选择之一,并且Cron + Rake任务可能是该案例中的最佳解决方案。