我正在使用thor编写命令行任务(在rails 3应用程序中),并尝试通过heroku将输入传输给它们,例如cat somefile.csv | heroku run thor sometask
在我的本地机器cat somefile.csv | thor sometask
上运行得很好,但是在heroku上可能会失败。sometasks的一些版本偶尔会工作,其他的总是在特定的点失败--一个问题是cat somefile.csv
在被thor sometask
使用时被回显到控制台(这只发生在heroku上,所以我认为这是heroku CLI内部的问题)。
我已经找到了一个解决办法,那就是确保我在thor任务和它们调用的函数中没有写任何东西到控制台(stdout),但是这样做是令人沮丧的(没有进度指示等)。
另一个“变通办法”是确保发送的文件小于4k(4095字节)-我还没有能够使它失败
知道为什么会发生这种情况吗(以及为什么cat会被回显到stdout)?是否有4k的stdout缓冲区限制,例如在通信过程中的某个地方?有什么方法可以使heroku CLI不那么冗长吗?
1条答案
按热度按时间qv7cva1a1#
如果您使用“不向控制台写入任何内容”的解决方法,并使用
pv
而不是cat
,则可以看到进度指示器。输出可能如下所示: