我有一个python脚本,它创建一个运行索引操作的子进程(logstash to elasticsearch)。如何在python子进程完成后执行post操作
的代码片段如下,
process = subprocess.Popen([logstash, '-f', sample.conf],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
我不叫process.wait(),作为子我创建需要独立运行脚本的其余部分。
但我必须在子流程完成时更新数据库记录。我正在运行的索引操作不允许我创建一个后期作业调用,这将允许我更新数据库。
我该如何处理python子流程?我将作业的PID存储在一个文本文件中,但是我想要一个触发器来知道子流程何时完成以执行下一个脚本。
这看起来像写给我的方法。但执行上面的代码会抛出一个错误“TypeError:'Popen'对象不可迭代”。它看起来像在子流程内创建子流程是不允许的。你成功测试过上面的代码吗? – Vinod
对不起,错字!固定。我没有测试过,但它与我写的东西非常相似,这很有用。 –
谢谢,错误消失了。但是,如果我执行上面的代码,一旦主线程代码完成,脚本挂在终端上,直到子进程完成。如何让子进程运行并退出主线程(如使命令行再次激活)? – Vinod