Ruby on rails Heroku Rake进程提前退出,不';我跑不动

Ruby on rails Heroku Rake进程提前退出,不';我跑不动,ruby-on-rails,heroku,Ruby On Rails,Heroku,我有一个用于Heroku调度程序的rake任务。我的问题是,当我在Heroku上运行rake任务时,该过程从未完全完成,而是提前退出 我要做的是对数组的每个成员执行一个操作。此阵列有4500个项目。在我的动作车型上,功能如下: def my_rake_task(some_array) i = 0 while i < some_array.count do puts "#{i} number in {some_array[i]}" i += 1

我有一个用于Heroku调度程序的rake任务。我的问题是,当我在Heroku上运行rake任务时,该过程从未完全完成,而是提前退出

我要做的是对数组的每个成员执行一个操作。此阵列有4500个项目。在我的
动作
车型上,功能如下:

def my_rake_task(some_array)
    i = 0
    while i < some_array.count do
        puts "#{i} number in {some_array[i]}"
        i += 1
    end
end 
当我在本地运行这个程序时,一切正常,我将看到数组中的所有4500项都正确输出。当我推到Heroku并通过
Heroku运行rake my_rake_task
检查它时,它将输出约1000到约1600行,然后停止

我的日志如下所示:

2015-01-17T16:44:28.259815+00:00 heroku[api]: Starting process with command `bundle exec rake my_rake_task` by my_user_name
2015-01-17T16:44:31.729533+00:00 heroku[run.8495]: Awaiting client
2015-01-17T16:44:31.765515+00:00 heroku[run.8495]: Starting process with command `bundle exec rake my_rake_task`
2015-01-17T16:44:32.155205+00:00 heroku[run.8495]: State changed from starting to up
2015-01-17T16:45:31.914275+00:00 heroku[run.8495]: State changed from up to complete
2015-01-17T16:45:31.896364+00:00 heroku[run.8495]: Process exited with status 0

我想知道这是否是因为我只使用了一个dyno?或者如果有其他原因?非常感谢您的任何见解。

基于您提供的有限信息,我为您提供了一些解决方案,可以确保您的任务按预期运行

首先,当您在Heroku上运行rake任务时,尤其是当它们是长时间运行的任务时,请独立运行它们。这将确保与终端的连接不会干扰任务。例如,如果在任务完成之前关闭终端,它将提前结束

heroku run:detached rake my_rake_task
其次,如果您正在检查日志,并且只看到约1600行输出,请确保您正在请求更多日志:

heroku logs -n 5000
第三,你应该使用延迟的作业
这将把所有东西都放在一个队列中,在worker dynos上运行任务,有错误报告,每个任务/作业都有完整的日志。您可以在此处查看延迟作业的rails演员表

谢谢@heading\u to\u tahiti。我以前使用过延迟作业,但我试图避免在这个项目中使用它,因为它需要额外的动力。我尝试了heroku run:Distached rake my_rake_task,我现在看到的项目1)无序,这很奇怪,2)只有数组中大于2800的项目。所以仍然不能正常工作。那么,我的主要问题是,这是Heroku如何管理dynos的问题吗?这是否意味着只有一个dyno的应用程序的功能受到严重限制?有点令人沮丧,因为这个rake任务实际上是这个应用程序唯一做的事情。。。但我发现了问题所在。在我的过程中,我调用了一个由于请求量太大而一直失败的API。在本地,我对这个调用进行了注释,因此在本地一切都正常,但在生产环境中,它将运行,API失败,进程停止,并且当任务退出时,命令的其余部分从未被调用。
heroku logs -n 5000