为什么浏览器在Python的time.sleep(1)之后打开两次?

时间:2014-10-28 18:37:37

标签: python subprocess tornado sleep pid

我正在使用Tornado Framework创建一个Python Web应用程序。我想让测试过程更快,所以我使用subprocess模块使用相同的端口结束进程。当我没有time.sleep(1)电话时,我无法使用该端口,因为它在我再次尝试收听之前没有关闭。

使用sleep时代码有效,但webbrowser.open_new(...)被调用两次。第一次它无法使用端口,但第二个选项卡打开时带有一个侦听端口。

if __name__ == "__main__":
    p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
    out, err = p.communicate()

    for line in out.splitlines():
        if 'python' in line:
            pid = int(line.split(None, 1)[0])
            if pid != os.getpid():
                os.kill(pid, signal.SIGINT)
                time.sleep(1)

    webbrowser.open_new('http://localhost:' + str(PORT) + '/')

    application.listen(PORT)
    tornado.ioloop.IOLoop.instance().start()

为什么浏览器会打开两次?

输出:http://imgur.com/jjeXjDy

0 个答案:

没有答案