Торнадо проходит через порт, вы можете позвонить bind_sockets
с портом 0, например так:
import tornado.httpserver
import tornado.ioloop
import tornado.netutil
import tornado.web
app = tornado.web.Application()
sockets = tornado.netutil.bind_sockets(0, '')
server = tornado.httpserver.HTTPServer(app)
server.add_sockets(sockets)
for s in sockets:
print('Listening on %s, port %d' % s.getsockname()[:2])
tornado.ioloop.IOLoop.instance().start()
Обратите внимание, что вы получите разные номера портов для IPv4и IPv6.Если вы хотите, чтобы IPv4 и IPv6 находились на одном и том же порту, либо попробуйте сами номера портов, либо предоставьте список со своим собственным сокетом, созданным, как в вопросе (создайте сокет IPv6 с IPV6_V6ONLY, установленным в 0, чтобы получить оба IPv6 и IPv4 ната же розетка) вместо sockets
в вышеприведенном.