我在django应用程序中有两个独立的subprocess
调用,每个调用都在不同的视图中。第一个调用dcraw图像转换工具获取上载的原始图像并将其转换为tiff。(.tiff输出通常比输入大9倍,例如8mb图像产生72mb tiff。)
pdcraw = subprocess.Popen(dcraw_args, stdout=None, stderr=None)
pdcraw.communicate()
我的第二个子进程调用一个matlab脚本来处理tiff并输出相关的数据文件和图像。当我自己运行脚本时,这个调用通常需要15-20秒。在
^{pr2}$我的问题是:对于这两个子进程调用,我必须手动重新加载视图才能使它们实际运行。“围绕”它们的其余代码运行良好。有什么想法可以避免这种情况吗?我想知道这是否是某种缓存问题,因为我已经能够让第一个子进程在开始需要重新加载之前运行几次。非常感谢您的洞察力!先谢谢你。在
我尝试过的事情:
time.sleep
,认为这可能是个捷径。不起作用。在stdout
使用管道而不是None
。不过,我认为应该使用None
,因为我不需要从命令中读取结果(它们只是将图像输出到args中指定的目录)。在
因为子进程的整个思想是异步的,所以当您的视图被解析到浏览器时,它还没有准备好。在
也许您需要发出Ajax请求来检查进度状态,一旦文件可用,服务器就可以发送它们。在
或者使用WebSockets,它可以在任何数据可用时立即发送,在保证超快速响应的同时不需要额外的请求。在
相关问题 更多 >
编程相关推荐