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