我正在尝试创建一个作业,以便向Twilio调用发送通知,因此有一个强大的解决方案可以确保作业在特定时间运行很重要(我认为不会被放置进入队列足够准确)。
此类任务的最佳解决方案是什么?
这些通知需要在通话中的特定时间发生。如“1分钟左右”。因此它需要能够:
(如果该解决方案可以在Heroku上运行会很好)
答案 0 :(得分:3)
您可以使用Heroku cron
每天或每小时运行一次作业。
每日cron是免费的,每小时cron每月花费3美元:http://addons.heroku.com/cron。
通常cron
会在您首次启动时运行(例如,如果您在下午3点设置它,它将在每天下午3点运行),但您可以通过发送电子邮件来支持@ heroku来更改它.COM。
要在cron中运行代码,请将代码添加到cron.rake
文件中,然后查看cron文档here。
Heroku自己的cron样本建议进行时间检查,即
if Time.now.hour % 4 == 0 # run every four hours
...
但是,如果您正在运行每日cron,则代码将在可能失败上述条件的时间运行。因此,除非您支付每小时cron的费用,并且您只希望它运行特定的小时,否则请忽略其部分示例代码并正常包含您自己的代码。
尝试delayed_job
的{{1}}列,这可以为您提供在特定时间运行作业所需的灵活性。
答案 1 :(得分:1)
你需要为此添加一个cronjob。如果您在Linux机器上,那么您可以将cron添加到crontab并指定它运行的时间。它非常灵活。你可以在这里找到详细信息:
http://en.wikipedia.org/wiki/Cron
如果你想以红宝石的方式做,请尝试每当gem:
https://github.com/javan/whenever
答案 2 :(得分:0)
在主机控制面板中转到cron作业
答案 3 :(得分:0)
对于您提到的具体案例,我认为您应该尝试使用delayed_job:
https://github.com/collectiveidea/delayed_job#readme
它有一个run_at选项,您可以在其中指定运行作业的时间。