Ao longo das linhas da sua tentativa original, você pode ajustar essa função para o seguinte:
function runserver() {
python manage.py runserver 10.211.55.4:$PORT
}
e depois chama assim:
PORT=3000 runserver
Estou cansado de digitar manage.py startserver 10.211.55.4:4000
, então decidi criar um alias para isso. A única coisa é: a porta muda algumas vezes. Então eu fiz isso no perfil bash:
function runserver() {
python manage.py runserver 10.211.55.4:
}
Mas quando eu o chamo: runserver 3000
, começa, mas imediatamente pára de dizer:
"Erro: Esse endereço IP não pode ser atribuído a". No entanto, se eu digitar a mesma coisa na linha de comando, ela funciona sem reclamações.
Ao longo das linhas da sua tentativa original, você pode ajustar essa função para o seguinte:
function runserver() {
python manage.py runserver 10.211.55.4:$PORT
}
e depois chama assim:
PORT=3000 runserver
Este é, na verdade, um erro que você recebe do Python / Django quando você o alimenta com um endereço IP que não pode ser vinculado (um que não faz parte do sistema) como mostrado em um exemplo real, :
$ python manage.py runserver 123.123.123.123:8000
Validating models...
0 errors found
June 03, 2014 - 22:36:58
Django version 1.5.7, using settings 'tv.settings'
Development server is running at http://123.123.123.123:8000/
Quit the server with CONTROL-C.
Error: That IP address can't be assigned-to.
Então, você precisa corrigir seu endereço IP (veja a saída de ifconfig --all
para ver o que está disponível) ou apenas ligar a todos eles com:
function runserver() {
python manage.py runserver 0:
}
O lado negativo das coisas é bom.
Você está fazendo certo.
Suspeito que você esteja enfrentando um problema de rede em seu teste, e o fato de o teste com falha ter usado a função foi uma coincidência. Quando você fecha uma conexão TCP, a porta permanece em uso por um pequeno período de tempo (30s), caso haja pacotes pendentes que ainda não foram recebidos (os pacotes podem chegar fora de ordem). Este é o TIME_WAIT
state . Para permitir que um novo servidor seja reiniciado imediatamente, definem o SO_REUSEADDR
flag com setsockopt
(há um exemplo no Python documentação socket
).
Podemos criar o alias com o comando de grupo { list; }
e o redirecionamento here-string <<<
. O objetivo principal é redirecionar stdin
para o comando. Há algumas maneiras apresentadas abaixo
alias runserver='{ xargs -I % python manage.py runserver 10.211.55.4:%;} <<<'
alias runserver='{ IFS= read -r port; python manage.py runserver 10.211.55.4:"$port";} <<<'
alias runserver='{ port=$(line); echo python manage.py runserver 10.211.55.4:"$port";} <<<'
Observe o espaço após {
e ponto e vírgula antes de }
serem necessários.