Como faço para criar um servidor HTTP em Python usando a primeira porta disponível?

StackOverflow https://stackoverflow.com/questions/442062

  •  22-07-2019
  •  | 
  •  

Pergunta

I quiser evitar o número da porta como no seguinte:

httpd = make_server('', 8000, simple_app)

A razão que eu estou criando o servidor desta maneira é que eu quero usá-lo como um 'kernel' para um aplicativo Adobe AIR para que ele irá se comunicar usando PyAMF. Desde que eu estou executando isso no lado do cliente, é muito possível que qualquer porta defino já está em uso. Se há uma maneira melhor de fazer isso e estou fazendo a pergunta errada por favor me avise.

Foi útil?

Solução

O problema é que você precisa de uma porta conhecida para o aplicativo para uso. Mas se você der um número de porta de 0, acredito que o sistema operacional irá fornecer-lhe com a primeira porta não utilizada disponível.

Outras dicas

O problema é que você precisa de uma porta conhecida para o aplicativo para uso. Mas se você der um número de porta de 0, acredito que o sistema operacional irá fornecer-lhe com a primeira porta não utilizada disponível.

Você está correto, senhor. Aqui está como isso funciona:

>>> import socket
>>> s = socket.socket()
>>> s.bind(("", 0))
>>> s.getsockname()
('0.0.0.0', 54485)

Agora tenho um soquete vinculado à porta 54485.

é make_server uma função que você escreveu? Mais especificamente, você lida com o código que cria as bases? Se o fizer, deve haver uma maneira onde você não especificar um número de porta (ou você especificar 0 como um número de porta) e o sistema operacional irá escolher uma disponível para você.

Além disso, você poderia simplesmente escolher um número de porta aleatório, como 54315 ... é improvável que alguém vai usar isso.

Firewalls permitem que você permitir ou negar tráfego em uma base porta-a-porta. Por esta razão, uma aplicação sem uma porta definida pelo bem deve esperar para correr em todos os tipos de problemas em uma instalação do cliente.

Eu digo escolher uma porta aleatória, e torná-lo muito fácil para o usuário para alterar a porta, se necessário.

Aqui está um bom ponto de partida para portas conhecidas .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top