我正在使用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()
为什么浏览器会打开两次?