Python 如何关闭龙卷风打开的所有插座?

Python 如何关闭龙卷风打开的所有插座?,python,sockets,tornado,Python,Sockets,Tornado,Tornado的插座是开着的,我好像关不上 我真的很惊讶,自从一周前我上次运行这个服务器以来,我已经打开和关闭了我的计算机,而终端没有运行。总而言之,我以为这台服务器在过去的一周里关闭了 到目前为止,我尝试过的是解决这个类似问题的方法:,但没有任何效果 我试过使用IOLoop.close(all\u fds=True) ,返回下面的错误 >>tornado.ioloop.ioloop.close(all_fds=True) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError

Tornado的插座是开着的,我好像关不上

我真的很惊讶,自从一周前我上次运行这个服务器以来,我已经打开和关闭了我的计算机,而终端没有运行。总而言之,我以为这台服务器在过去的一周里关闭了

到目前为止,我尝试过的是解决这个类似问题的方法:,但没有任何效果

我试过使用
IOLoop.close(all\u fds=True)
,返回下面的错误

>>
tornado.ioloop.ioloop.close(all_fds=True)

回溯(最近一次呼叫最后一次):

文件“”,第1行,在

TypeError:必须使用IOLoop实例作为第一个参数调用unbound方法close()(但没有得到任何结果)

如何关闭所有插座,以便重新启动?很有趣

首先,应该为
tornado.ioloop.ioloop
对象调用
close()
方法,而不是为类对象调用
close()。您可以使用方法
tornado.ioloop.ioloop.current()
获取当前
tornado.ioloop.ioloop
对象

例如:

my_ioloop = tornado.ioloop.IOLoop.current()
my_ioloop.close(all_fds=True)
进一步阅读:

  • 文件
  • 为什么出现
    TypeError

在我的例子中,问题并不是特别与龙卷风有关,而是它启动了一个过程,即使在它失去追踪它的踪迹之后,这个过程仍在继续

当我重新启动电脑时,OSX跟踪了进程,但Tornado没有。解决办法是找到开放的港口,关闭龙卷风正在使用的港口

答案来自这里:


这不起作用。我仍然收到一个错误,说套接字保持打开状态。也许套接字不再在tornado中注册,而只在它引用的更高框架中注册?
//first, check the port which your code opens.
$ sudo lsof -i :8528
COMMAND   PID USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
Python  29748 root    4u  IPv6 0xe782a7ce5603265      0t0  TCP *:8528 (LISTEN)
Python  29748 root    5u  IPv4 0xe782a7ce4aec61d      0t0  TCP *:8528 (LISTEN)

//then kill the process, using the PID
$ sudo kill 29748