4

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

这行得通吗?我很好奇是否有人尝试过这个。

谢谢。

4

3 回答 3

4

只要您不使用 HTTP 请求作为代理来启动任务,rake 任务就可以工作。事实上,如果任务是从 HTTP 请求派生的,则超时将与 HTTP 请求相同。

您应该使用不同的方法来启动任务。crontab(在 Heroku 方面)或 Worker 都是很好的解决方案。

于 2010-02-22T13:50:04.780 回答
2

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

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找到它。

于 2011-05-11T22:25:40.070 回答
2

我建议为此在工作人员身上使用后台工作。然后,您的定期流程只需启动工作人员,并且该流程花费多长时间都没有关系。

于 2010-02-22T13:18:04.803 回答