Heroku上的Rake任务可以超时吗?

时间:2010-02-22 12:54:09

标签: ruby-on-rails rake heroku

我正在使用Heroku,并希望通过cron调用一个脚本(在另一台服务器上),该脚本定期请求对我的Heroku应用程序执行操作。此操作将依次运行一些可能需要1或2分钟才能完成的处理。我相信Heroku有30秒的请求限制,我认为可以从我的控制器操作调用Rake任务。

这会有用吗?我很好奇是否还有人试过这个。

感谢。

3 个答案:

答案 0 :(得分:4)

只要您不使用HTTP请求作为代理来启动任务,rake任务就会起作用。实际上,如果任务是从HTTP请求分叉的,则超时将与HTTP请求相同。

您应该使用不同的方法来启动任务。无论是crontab(在Heroku方面)还是工作者都是很好的解决方案。

答案 1 :(得分:2)

我建议在工作人员上使用后台工作。然后,您的定期流程只需要启动工作人员,这个过程需要多长时间。

答案 2 :(得分:2)

我刚刚创建了一个gem来解决这个问题。它允许您将任何rake任务排队为delayed_job,例如

rake delay:db:seed

将执行

rake db:seed

作为delayed_job。您可以在http://rubygems.org/gems/delayed_taskhttp://blog.opsb.co.uk/long-running-rake-tasks-on-heroku找到它。