gpt4 book ai didi

javascript - 如何超时终止该子进程?

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:19 28 4
gpt4 key购买 nike

我知道有关终止子进程调用的问题已被问过几次,包括 here但是,尝试遵循这些答案,如果脚本挂起,我似乎无法退出(在我的情况下,我正在执行 phantomjs 脚本)。例如,如果我尝试在虚拟代码中加载不存在的 jquery 文件,即使超时,脚本也会挂起。这是我的代码:

def kill_proc():
if p.poll() != 0:
process.kill()


p = subprocess.Popen(['phantomjs','file.js'],stdout=subprocess.PIPE)
out, phantomError = p.communicate()

t = Timer(5, kill_proc) # should kill it after 5 seconds
t.start()
p.wait()

我的 phantomjs 脚本(正在进行中):

var page = require('webpage').create();
page.includeJs("http://localhost/jquery.js",function(){
phantom.exit();
});

最佳答案

我认为你的问题可能是 p.communicate() 将“Wait for process to terminate ”,这意味着如果脚本挂起,你的计时器永远不会真正启动。

将您的调用移至计时器启动后进行通信(并将kill_proc函数中的process.kill()更改为p.kill()),我认为它会执行您想要的操作。

正如我上面的评论提到的,Python 3.3 的子进程模块函数有一个超时参数,可以使这一切自动发生。

关于javascript - 如何超时终止该子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992049/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com