我正在构建一个不断收集数据的应用程序。我想为用户提供一个可定制的警报系统,他们可以在其中为他们想要通知的信息类型指定参数。最重要的是,我希望用户能够指定警报的频率(当它们出现时,每日摘要,每周摘要)。
有没有关于这个主题的最佳实践或指南?
我的直觉告诉我排队和工人会参与其中,但我不确定如何。
我使用 Parse.com 作为我的数据库,并且还可能使用 Lucene 风格的搜索来索引所有内容。因此,这开启了用户指定查询字符串以指定他/她想要的警报的可能性。
我正在构建一个不断收集数据的应用程序。我想为用户提供一个可定制的警报系统,他们可以在其中为他们想要通知的信息类型指定参数。最重要的是,我希望用户能够指定警报的频率(当它们出现时,每日摘要,每周摘要)。
有没有关于这个主题的最佳实践或指南?
我的直觉告诉我排队和工人会参与其中,但我不确定如何。
我使用 Parse.com 作为我的数据库,并且还可能使用 Lucene 风格的搜索来索引所有内容。因此,这开启了用户指定查询字符串以指定他/她想要的警报的可能性。
如果您使用的是 Rails、Heroku 和 Parse,我们已经做了类似的事情。我们实际上创建了第二个 Heroku 应用程序,它没有 web dyno——它只有一个 worker dyno。那个人仍然可以访问同一个 Parse.com 帐户并在 rake 任务中运行其所有任务,就像他们在此处指定的那样:
https://devcenter.heroku.com/articles/scheduler#defining-tasks
我们有几个类可以处理繁重的工作:
class EmailWorker
def self.send_daily_emails
# queries Parse for what it needs, loops through, sends emails
end
end
我们在 lib/tasks 中也有 scheduler.rake:
require 'parse-ruby-client'
task :send_daily_emails => :environment do
EmailWorker.send_daily_emails
end
我们在 Heroku 中的调度器面板是这样的:
rake send_daily_emails
我们将其设置为每晚运行。请注意,面向公众的 Heroku Web 应用程序不执行此工作,而是“调度程序”版本。您只需要确保每次更新代码时都推送到两者。这种方式是免费的,但如果你想组合它们,这很简单,因为它们是相同的代码库。
您也可以通过heroku run rake send_daily_emails
在您的开发机器上运行来测试它。