对python的后续调用子流程.Popen().communicate()挂起

2024-05-15 15:35:35 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的http请求处理函数中,我需要使用不同的uri执行几个httpget测试。代码如下:

def send_http_msg(command):
    ...
    p = subprocess.Popen("exec " + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)                                  
    result = p.communicate()

典型的命令是curl --connect-timeout 5 http://1.2.3.4:22。你知道吗

我无法解决的问题是,当调用函数再次调用send_http_msg()时,p.communicate()只是挂起,永远不会返回。我还尝试了p.communicate(timeout=10),它也挂起了,没有看到timeoutExpired异常。你知道吗

我也试过subprocess.check_output(),它也挂起了第二个电话。你知道吗

python是2.7.3版本。你知道吗

请帮忙。你知道吗


Tags: 代码sendhttpdeftimeoutmsguricommand