如何关闭 Tornado 打开的所有套接字?
How do I close all sockets opened by Tornado?
Tornado 有一个打开的套接字,我似乎无法将其关闭。
我真的很惊讶,因为自从一周前上次 运行 这个服务器以来我一直在打开和关闭我的计算机,而终端不是 运行。总而言之,我认为这个服务器在过去一周内关闭了。
到目前为止我已经尝试过的是这个类似问题的解决方案:python websocket with tornado. Socket aren't closed,它什么也没做。
我试过使用 IOLoop.close(all_fds=True)
PyDoc for this function,返回以下错误。
>>>
tornado.ioloop.IOLoop.close(all_fds=True)
Traceback (most recent call last):
File "", line 1, in
TypeError: unbound method close() must be called with IOLoop instance as first argument (got nothing instead)
如何关闭所有套接字以便从头开始重新启动?
有意思。
首先,您应该为 tornado.ioloop.IOLoop
object 调用 close()
方法,而不是为 class object.您可以使用 tornado.ioloop.IOLoop.current()
.
方法获取当前 tornado.ioloop.IOLoop
对象
示例:
my_ioloop = tornado.ioloop.IOLoop.current()
my_ioloop.close(all_fds=True)
进一步阅读:
- IOLoop.current() 文档
- Explanation 为什么你有
TypeError
就我而言,问题不在于 Tornado,而是在于它启动的一个进程,即使在它失去对它的跟踪后仍在继续。
当我重新启动计算机时,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
Tornado 有一个打开的套接字,我似乎无法将其关闭。
我真的很惊讶,因为自从一周前上次 运行 这个服务器以来我一直在打开和关闭我的计算机,而终端不是 运行。总而言之,我认为这个服务器在过去一周内关闭了。
到目前为止我已经尝试过的是这个类似问题的解决方案:python websocket with tornado. Socket aren't closed,它什么也没做。
我试过使用 IOLoop.close(all_fds=True)
PyDoc for this function,返回以下错误。
>>>
tornado.ioloop.IOLoop.close(all_fds=True)Traceback (most recent call last):
File "", line 1, in
TypeError: unbound method close() must be called with IOLoop instance as first argument (got nothing instead)
如何关闭所有套接字以便从头开始重新启动?
有意思。
首先,您应该为 tornado.ioloop.IOLoop
object 调用 close()
方法,而不是为 class object.您可以使用 tornado.ioloop.IOLoop.current()
.
tornado.ioloop.IOLoop
对象
示例:
my_ioloop = tornado.ioloop.IOLoop.current()
my_ioloop.close(all_fds=True)
进一步阅读:
- IOLoop.current() 文档
- Explanation 为什么你有
TypeError
就我而言,问题不在于 Tornado,而是在于它启动的一个进程,即使在它失去对它的跟踪后仍在继续。
当我重新启动计算机时,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