【问题标题】:Failsafe for billing system?计费系统的故障保护?
【发布时间】:2013-02-04 17:10:39
【问题描述】:

我目前有一个计费系统,每晚脚本会检查自脚本运行之日起一个月到期的订阅,例如:

 Subscription.where(:expires => (Date.today + 30.days)).find_each do |sub|
  unless sub.month_reminder_sent
    reminder.total += 1
    reminder.subscriptions << sub
    BillingMailer.monthly_reminder(sub.user).deliver
    sub.month_reminder_sent = true
  end

我还有另一组要在到期前一周运行。 Subs 如果没有续订就会自动过期(我只是检查 sub.expiry_date 是否还没有通过来检查 sub 是否处于活动状态)。

如果服务器停机,我需要采取哪些应急措施?或者脚本没有运行或失败? (因此遗漏了一些记录。)

以上是否是进行计费的最佳方式?还是我不必要地担心,以上就足够了?

【问题讨论】:

    标签: ruby-on-rails billing


    【解决方案1】:

    在您的模型中添加另一个日期列(即processed_date),您需要在检查期间对其进行更新,然后在您的脚本中添加一个附加条件,该条件将处理所有过期记录+这些之前未处理的记录。如果服务器关闭或脚本未正确执行 - 您将在下次处理丢失的记录。还要考虑一些报告,即:处理的记录数、以前运行处理的记录数等。

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 2011-06-26
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2012-05-08
      • 2014-08-08
      • 1970-01-01
      • 2014-03-03
      相关资源
      最近更新 更多