龙卷风有一个开放的插座,我似乎无法将其关闭。
自上次我一次运行此服务器以来,我一直打开和关闭电脑,终于没有运行,我感到非常惊讶。总而言之,我认为这台服务器已经过去一周了。
我迄今为止尝试过的事情是这个类似问题的解决方案:python websocket with tornado. Socket aren't closed,它什么也没做。
我尝试过使用IOLoop.close(all_fds=True)
PyDoc for this function,它返回了以下错误。
>>>
tornado.ioloop.IOLoop.close(all_fds = True)追踪(最近一次呼叫最后一次):
文件"",第1行,
TypeError:必须使用IOLoop实例作为第一个参数调用未绑定方法close()(没有任何内容)
如何关闭所有套接字以便我可以从干净的平板再次启动?
答案 0 :(得分:1)
有趣。
首先,您应该为close()
对象调用tornado.ioloop.IOLoop
方法,而不是类对象。您可以使用tornado.ioloop.IOLoop
方法获取当前tornado.ioloop.IOLoop.current()
对象。
示例:
my_ioloop = tornado.ioloop.IOLoop.current()
my_ioloop.close(all_fds=True)
进一步阅读:
TypeError
答案 1 :(得分:0)
在我的情况下,问题不是特定于龙卷风,而是在它开始的过程中,即使在它失去追踪之后它仍在继续。
当我重新启动计算机时,OSX会跟踪该过程,但Tornado却没有。解决方案是找到开放端口并关闭Tornado正在使用的端口。
答案最初来自: https://stackoverflow.com/a/17703016/4808079
//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