我正在使用crontab启动一个python脚本,假设它使用subprocess.popen()自行启动多个procceses。我使用此命令启动可能需要30分钟的过程 - 所以我不想等待结果,而是继续使用我原来的crontab运行脚本。问题是crontab似乎像subprocess.call一样处理subprocess.popen!
我可以在我的日志文件和进程列表中清楚地看到第一个popen成功但它不会在后台继续 - 它等到firts popen进程结束...
这可能是因为我将stderr / steout重定向到文件?我没有看到连接,但可能......
我的代码如下:
# inside process spawning loop
# open and append process to list
mainLogger.debug("about to launch process with popen")
scoopPopenObj = subprocess.Popen(cmdArgsString,
shell=True,stdout=qScoopLogFile,stderr=qScoopLogFile)
openScoops.append((fileName,time.time(),scoopPopenObj))
# rest of script, here is where i dont get until scoopPopenObj finishes..
任何想法?
答案 0 :(得分:1)
我不确定这与问题有关,但在将stderr
重定向到与stdout
相同的管道时,您应该使用stderr=subprocess.STDOUT
,如{{3}中所述}。