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

Ruby on rails Heroku上的Rake任务可以超时吗?,ruby-on-rails,rake,heroku,Ruby On Rails,Rake,Heroku,我正在使用Heroku,希望有一个脚本(在另一台服务器上)通过cron调用,定期在我的Heroku应用程序上请求操作。此操作将依次运行一些可能需要1或2分钟才能完成的处理。我相信Heroku有30秒的请求限制,我想可以从我的控制器操作调用一个Rake任务 这样行吗?我很好奇是否有人试过这个 谢谢。为此,我建议在员工身上使用背景工作。然后,您的周期性进程只需启动辅助进程,而不管该进程需要多长时间。只要您不使用HTTP请求作为代理来启动任务,rake任务就可以工作。事实上,如果任务是从HTTP请求派

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

这样行吗?我很好奇是否有人试过这个


谢谢。

为此,我建议在员工身上使用背景工作。然后,您的周期性进程只需启动辅助进程,而不管该进程需要多长时间。

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


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

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

rake delay:db:seed
哪个将执行

rake db:seed

作为一项延迟的工作。您可以在或找到。

谢谢。但我应该补充一点,我希望避免背景工作者。我只需要定期这样做,增加一个工人会有点昂贵。我希望一个rake任务可以做到这一点。你可以动态控制你拥有的工人数量,你可以在执行任务所需的时间内启动一个工人。我可以通过调用rake任务的HTTP请求来执行工人吗?你很可能会向一个restful服务发出web请求,该服务将注册一个新的延迟作业。这将立即被工人接走。谢谢,这是非常有用的。因此,我可以有一个控制器操作,它使用heroku客户机库根据请求创建一个worker。但是,在工作完成后,我怎么能拆掉这个工人呢?