我想使用 Rufus-Scheduler 来每天发送一封邮件。
我严格按照 GitHub here 上给出的说明(代码片段,使用瘦服务器等);但没有发生(没有发送邮件),我无法根据 Heroku 日志找出原因

我的代码

# config/initializers/scheduler.rb

require 'rufus-scheduler'


s = Rufus::Scheduler.singleton


# Here goes my mailing code (already tested and works well)

s.every '1d' do

Rails.logger.info "hello, it's #{Time.now}"
Rails.logger.flush
end

为了使 rufus-schedul 工作,GitHub 上是否还有其他一些未提及的要点?非常感谢

最佳答案

您可以这样做,但您必须了解业余爱好者的 dynos 是如何工作的。每个免费帐户 is allocated hours like this



因为 rufus-scheduler 在您的 ruby​​ 应用程序进程中作为一个线程运行(这就是它在您运行 rails 控制台时开始运行的原因),只要您的服务器(我使用 puma)在运行,rufus 调度程序就会运行得很好。

不利的一面是,如果您在服务器中运行两个进程,假设您使用 3-4 个 worker 运行 puma,那么您将同时运行 3-4 个调度程序,使其以三次/四次重复执行您的计划事件,所以也要记住这一点。

所以步骤很简单
- 确保您有足够的时间整月连续运行您的测功机
- 使用像 pingdom 这样的服务,每隔几分钟 ping 您的应用程序以保持 dyno 处于事件状态,以便 Heroku 在 30 分钟不事件后不会关闭它(它这样做是为了释放 dynos)
- 这应该是你需要做的全部

请记住,要运行 dyno 一个月,您将需要大约 745 小时,您的主要分配涵盖(添加信用卡时)。如果由于某种原因你用完了几个小时(假设你在帐户上运行两个不同的应用程序并使用我在下面描述的方法)那么这可能会发生在你身上



当您可以像其他人一样使用 heroku 调度程序来安排 rake 任务时,似乎会遇到很多麻烦。

关于ruby-on-rails - 使 rufus-scheduler 在 Heroku 上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35731097/

10-14 14:57