
입력하는 것이 지겨워서 manage.py startserver 10.211.55.4:4000
별칭을 만들기로 결정했습니다. 유일한 것은 포트가 때때로 변경된다는 것입니다. 그래서 저는 bash 프로필에서 이렇게 했습니다:
function runserver() {
python manage.py runserver 10.211.55.4:$1
}
하지만 다음을 호출하면 runserver 3000
시작되지만 즉시 다음과 같은 말이 중지됩니다.
"오류: 해당 IP 주소는 할당할 수 없습니다." 그러나 명령줄에 동일한 내용을 입력하면 아무런 불만 없이 작동합니다.
답변1
원래 시도에 따라 해당 기능을 다음과 같이 조정할 수 있습니다.
function runserver() {
python manage.py runserver 10.211.55.4:$PORT
}
그런 다음 다음과 같이 호출하십시오.
PORT=3000 runserver
답변2
이는 실제로 아래의 실제 실행 예에서 볼 수 있듯이 Python/Django에 바인딩할 수 없는 IP 주소(시스템의 일부가 아닌 주소)를 제공할 때 Python/Django에서 반환되는 오류입니다.
$ 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.
따라서 IP 주소를 수정하거나( ifconfig --all
사용 가능한 항목을 보려면 의 출력을 확인) 다음을 사용하여 IP 주소 모두에 바인딩해야 합니다.
function runserver() {
python manage.py runserver 0:$1
}
배쉬 측면은 건전합니다.
답변3
당신은 제대로하고 있습니다.
테스트 중 네트워킹 문제가 발생한 것으로 의심되며, 실패한 테스트에서 해당 기능을 사용한 것은 우연의 일치였습니다. TCP 연결을 닫으면 아직 수신되지 않은 보류 중인 패킷이 있는 경우(패킷이 순서 없이 도착할 수 있음) 포트가 짧은 시간(30초) 동안 사용 상태로 유지됩니다. 이것이TIME_WAIT
상태. 새 서버를 즉시 다시 시작하려면,SO_REUSEADDR
깃발 을 세우다with setsockopt
(Python에 예제가 있습니다.socket
선적 서류 비치).
답변4
그룹 명령 { list; }
과 here-string <<<
리디렉션을 사용하여 별칭을 만들 수 있습니다. 주요 목표는 stdin
명령으로 리디렉션하는 것입니다. 아래에 몇 가지 방법이 나와 있습니다.
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";} <<<'
뒤의 공백 {
과 앞의 세미콜론이 }
필요합니다.