2016-03-01 71 views
1

我想每天使用Rufus-Scheduler发送邮件。 我严格遵循GitHub here(使用瘦服务器等片段)给出的指示;但nothnig发生(不邮寄),我不能想出根据Heroku的原因记录在Heroku上制作rufus-scheduler工作

我的代码

# 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 

是否有为了使鲁弗斯 - 正点GitHub上不mentionned一些其他点工作?非常感谢

+1

如果您将Procfile添加到问题描述中,它将有所帮助。 – jmettraux

回答

1

你可以做到这一点,但你必须了解业余爱好者的工作方式。每个免费帐户is allocated hours like this

账户每个月都有550小时的基础,您的免费试用版可以运行。除了这些基准时间外,使用信用卡进行验证的帐户还将额外获得450小时的免费动态配额。

因为鲁弗斯调度在你的Ruby应用程序进程中的线程运行(这就是为什么它启动时运行轨道控制台运行),只要你有你的服务器(我用的PUMA)运行,鲁弗斯调度会运行得很好。

不利的一面是,如果你在你的服务器上运行两个进程,比如你用3-4个工人运行美洲狮,你将有3-4个调度程序同时运行,使它执行你的预定事件一式三份/一式四份,请牢记这一点。

因此,步骤很简单 - 确保你有足够的时间来运行你的赛道一直都是一个月 - 使用服务像Pingdom的,ping你的应用程序每隔几分钟,以保持到了极致活跃,这样的Heroku没有按”在30分钟的不活动状态下(这样做可以释放动力) - 应该是你需要做的所有事情

只要记住要运行一个月的测功机,你需要大约745小时您的主要分配涵盖哪些内容(当您添加信用卡时)。如果由于某种原因,你跑出来的时间(比如你上运行帐户的两个不同的应用程序,并使用我下面介绍的方法),那么这可能发生在你

第二个通知将当你达到100%发送的帐户配额,届时您的应用程序的配额将在该月的剩余时间内进入休眠状态。因此,任何使用免费dynos的应用程序在本月的其余时间都将无法访问。

看起来像很多麻烦,当你可以使用heroku调度程序来安排像其他人一样的耙子任务。

1

(免责声明,我不是Heroku的专家,但我可以谷歌我的方式,我可以阅读文档)。

所以,这不是你第一次的Heroku - 鲁弗斯调度问题...(Rails_using Rufus in order to schedule sending mails daily

你说“以每天发送邮件”,那么你为什么不使用Heroku的调度插件? https://devcenter.heroku.com/articles/scheduler它可以每天甚至每小时计划(具有讽刺意味的是,它可能会错过一个时间表,所以他们推荐下面的“自定义时钟进程”)。

您是否意识到在计划时间到来时您的测功机可能正在睡觉? Heroku在一段时间不活动之后会让测试者“睡觉”。

Heroku的建议使用了“定制时钟过程”:https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes#custom-clock-processes

你必须了解你的目标平台,Heroku的,和你的系统适应它,有或没有鲁弗斯调度。作为一个侧面提示,你之前的帖子提到Passenger,这很难调整到不杀死rufus-scheduler的线程,但是这对Heroku来说不会起到很大的作用,你的dyno不应该永远活着,rufus-scheduler无法超越其webapp的测试版,因此推荐使用“自定义时钟进程”。