我正在使用Heroku,并希望通过cron调用一个脚本(在另一台服务器上),该脚本定期请求对我的Heroku应用程序执行操作。此操作将依次运行一些可能需要1或2分钟才能完成的处理。我相信Heroku有30秒的请求限制,我认为可以从我的控制器操作调用Rake任务。
这会有用吗?我很好奇是否还有人试过这个。
感谢。
答案 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_task或http://blog.opsb.co.uk/long-running-rake-tasks-on-heroku找到它。