首页 文章

在Heroku上运行Cron任务

提问于
浏览
21

我已经看到Heroku每小时收费15美元运行延迟工作,每天3美元/小时运行cron任务 . 有可能完全跳过它并手动运行我自己的cron任务吗?或者他们是否在某种程度上弄清楚我正在运行cron任务?

5 回答

  • 0

    我不完全确定"run my own cron tasks manually"的意思 . 特别是对于cron,您需要访问他们可以控制的 crontab ,因为他们是他们的服务器 . 如果你有另一种方法,它可能会很好,但请记住,在Heroku下运行时你的应用程序没有绑定到特定的服务器,并且服务器将在执行之间切换 .

    此外,除非他们自上次检查后更改了它,否则您可以免费运行每日cron任务,但每小时费用为3美元/月 .

    EDIT :是的,每日铁饼是免费的 . 见http://addons.heroku.com/ .

  • 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中,或者直接添加到个人计算机的 crontab ,如果您运行的是Linux或Mac OS X,并且可以根据需要为Heroku应用程序安排cron作业而且没有被指控 .

  • 21

    是的,我已成功在本地服务器上使用了一个cron作业,该作业基本上运行

    $ heroku rake <rake task>
    

    无论我需要什么时间间隔 . 我用过白杨木和竹子堆 .

  • -7

    如果你正在运行rails应用程序并以这种方式设置调度,你也可以安装像rufus-scheduler这样的gem . 由于某些原因,我不知道这是不是很糟糕的做法,但这是我用我的应用程序做的,它似乎工作正常 .

  • 4

    如果您想要预定作业,您还可以使用http://guardiano.getpeople.in这是一项免费服务(适用于10个作业)进行作业调度 .

    您只需在应用程序中设置HTTP endpoints 以在POST或GET上接收事件通知,您还可以设置一些其他参数以防止未经授权的操作 .

    所以你在Guardiano设立一份工作,如果你想让你的行动在将来运行一次,或者将你的动作设置为每隔X分钟一分钟,你就会留空http://yourapp.com/youraction并留空"minutes"空白 . 通过这种方式,您只需为您的app创建 endpoints ,并在调用此EP时执行某些操作 .

    所以你的应用程序可以睡觉,你不需要花钱和时间安排工作,并注意他们正常工作 .

    恕我直言,如果你需要一些快速的MVP或你需要为不同的应用程序设置很多工作,而不是像你可以实际外包cronjobs的免费服务是相当不错的 .

    还有一个名为Temporize的Heroku Addon这样做,但我不确定它是否仍然活着并正在工作

相关问题