2012-03-02 4 views
2

임의의 포트에서 토네이도 웹 서버를 실행해야합니다.바인드 토네이도 웹 서버 임의의 포트

일반적으로 소켓이 포트 0에 바인드되면 os는 임의의 포트를 할당합니다.

import socket 
s = socket.socket() 
s.bind(('',0)) 
print s.getsockname() 
('0.0.0.0', 39727) 

여기서 39727은 OS에서 할당 한 포트입니다.

어떻게 토네이도를 사용하여이 동작을 얻을 수 있습니까? 토네이도가 포트에 전달

답변

4

,이 같은 0의 포트 bind_sockets를 호출 할 수 있습니다 : 당신은 IPv4 및 IPv6에 대한 다른 포트 번호를 얻을 수 있습니다

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가 같은 포트에 있도록하려면 포트 번호를 직접 입력하거나 질문과 같이 만든 소켓을 사용하여 목록을 제공하십시오 (IPV6_V6ONLY를 0으로 설정 한 IPv6 소켓 만들기를 사용하여 IPv6 및 IPv4를 같은 소켓) 위의 sockets 대신에.

+0

바인딩 할 포트를 어떻게 결정할 수 있는지 생각해보십시오. – Gattster

+1

@Gattster 업데이트 답변. – phihag