我想在 Heroku 上的应用程序上运行一个 rake 脚本,这需要几个小时。如果我从笔记本电脑上的控制台启动它,然后关闭笔记本电脑,脚本将停止(并且我必须在脚本完成之前关闭笔记本电脑)。
如何在不将它“绑定”到我的笔记本电脑的情况下启动这个 rake 脚本。即让它继续运行直到它中断或完成?
heroku run rake update_feeds_complete --app myapp
是要运行的脚本...
就 Google 的哪些命令等向我提供建议也会有所帮助。
我想在 Heroku 上的应用程序上运行一个 rake 脚本,这需要几个小时。如果我从笔记本电脑上的控制台启动它,然后关闭笔记本电脑,脚本将停止(并且我必须在脚本完成之前关闭笔记本电脑)。
如何在不将它“绑定”到我的笔记本电脑的情况下启动这个 rake 脚本。即让它继续运行直到它中断或完成?
heroku run rake update_feeds_complete --app myapp
是要运行的脚本...
就 Google 的哪些命令等向我提供建议也会有所帮助。
您可以使用并关闭终端窗口运行命令,run:detached
它们将继续运行。所以你只需要运行
heroku run:detached rake update_feeds_complete --app myapp
您可能还想看看调度程序。https://devcenter.heroku.com/articles/scheduler
运行 rake 任务非常方便,即使是一次性的。
一般来说,我使用 resque 和 redis 来处理我想在 heroku 上运行的作业。如果这是一次性工作,我可能不会,但如果这是我要定期做的事情,那么安装它们会非常方便。
redis通过带有 Heroku 的“Redis To Go”插件安装。
resque是用于运行不同类型的后台作业的 gem。有很多用于发送电子邮件、作业调度等的 resque 插件。
我特别不熟悉 Heroku,但过去当我遇到这种情况时,我通过 SSH 使用远程执行:
ssh username@your.server -f 'your command here'
这将打开一个 ssh 会话,执行您的命令,然后关闭连接。但是您的脚本将继续远程运行。