2015-07-19 164 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任務可能是該案例中的最佳解決方案。