我已经看到Heroku每小时收费15美元运行延迟工作,每天3美元/小时运行cron任务。有可能完全跳过它并手动运行我自己的cron任务吗?或者他们是否在某种程度上弄清楚我正在运行cron任务?
答案 0 :(得分:21)
我不完全确定你的意思是“手动运行我自己的cron任务”。特别是对于 cron ,您需要访问他们可以控制的crontab
,因为他们是他们的服务器。如果您有其他方法,它可能会很好,但请记住,在Heroku下运行时,您的应用程序不依赖于特定服务器,并且服务器将在执行之间进行更改。
此外,除非他们自上次检查后更改了它,否则您可以免费运行每日cron任务,但每小时费用为3美元/月。
编辑:是的,每天的crons是免费的。请参阅http://addons.heroku.com/。
答案 1 :(得分:10)
如果您在计算机上安装Heroku gem,则可以按如下方式手动运行cron任务:
$ heroku rake cron
(in /disk1/home/slugs/xxxxxx_aa515b2_6c4f/mnt)
Running cron at 2010/04/25 10:28:54...
这将执行与Heroku的每日/每小时cron插件完全相同的代码;也就是说,要使其正常工作,您的应用程序必须具有带cron
任务的Rakefile,例如:
desc "Runs cron maintenance tasks."
task :cron do
puts "Running cron at #{Time.now.strftime('%Y/%m/%d %H:%M:%S')}..."
# TODO: your cron code goes here
end
现在,只需将heroku rake cron
命令添加到您的任何Unix服务器上的crontab中,如果您运行的是Linux或Mac OS X,甚至可以直接添加到个人计算机的crontab
中,然后就可以了为您的Heroku应用程序安排cron作业,而不需要为此付费。
答案 2 :(得分:4)
是的,我已成功在我的本地服务器上使用了一个基本上运行
的cron作业$ heroku rake <rake task>
无论我需要什么时间间隔。我已经习惯了白杨和竹子堆。
答案 3 :(得分:4)
更新2020年的答案:
您可以使用Heroku Scheduler,它是Heroku自己的附加组件,可让您使用一次性测功机计划命令(因此您只需为作业的运行时间付费)。插件本身是免费的,但实际上并不允许您使用cron,而只能使用简单的频率:每天,每小时或每10分钟。另外,也不保证您的工作将在计划的时间执行或完全执行。
还有其他3rd party add-ons个可以帮助您使用cron表达式运行一次性dynos的方法,以提供更好的灵活性,并且比Heroku Scheduler更具弹性(正确披露,我公司是这样一种add-上)。
您还可以使用自定义时钟进程(see here for more info),这实际上意味着您具有一个dyno或运行在其他dyno上运行的生成任务。通常,这比使用上述附加组件要花更多的钱,但是您可以更加精细地控制流程,并且由于仅依靠Heroku,因此它可能更稳定。
答案 4 :(得分:0)
如果你正在运行rails应用程序并以这种方式设置调度,你也可以安装像rufus-scheduler这样的gem。由于某些原因,我不知道这是不是很糟糕的做法,但这是我用我的应用程序做的,它似乎工作正常。
答案 5 :(得分:-7)
如果您想要预定作业,您还可以使用免费服务http://guardiano.getpeople.in(10个作业)进行作业调度。
您只需在应用程序中设置HTTP端点即可在POST或GET上接收事件通知,还可以设置一些其他参数以防止未经授权的操作。
所以你在Guardiano设立了一个职位{cal http://yourapp.com/youraction,如果你希望将来行动一次,或者将你的行动设置为每隔X分钟一分钟,则将“分钟”留空。通过这种方式,您只需为您的app创建端点,并在调用此EP时执行某些操作。
所以你的应用程序可以睡觉,你不需要花钱和时间来安排工作并注意他们正常工作。
恕我直言,如果你需要一些快速的MVP或你需要为不同的应用程序设置很多工作,而不是像你可以实际外包cronjobs的免费服务那样非常好。
还有一个叫做Temporize的Heroku Addon这样做,但我不确定它还活着吗?