Я устал от ввода manage.py startserver 10.211.55.4:4000
, так решенный для создания псевдонима для этого. Только вещь: порт когда-то изменяется. Таким образом, я сделал это в профиле удара:
function runserver() {
python manage.py runserver 10.211.55.4:$1
}
Но затем когда я называю его: runserver 3000
, это запускает его, но сразу прекращает говорить:
"Ошибка: Тот IP-адрес не может быть присвоен -". Однако, если я ввожу то же самое прямо в командную строку, это работает без, жалуется.
Вроде Вашей исходной попытки Вы могли скорректировать ту функцию к следующему:
function runserver() {
python manage.py runserver 10.211.55.4:$PORT
}
и затем назовите его как так:
PORT=3000 runserver
Это - на самом деле ошибка, которую Вы возвращаете от Python/Django при питании его IP-адрес, он не может связать с (тот, который не является частью системы), как показано в реальном, справедливо-управляемом примере ниже:
$ 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
для наблюдения, что доступно) или Вы просто связываете со всеми ними с:
function runserver() {
python manage.py runserver 0:$1
}
Сторона удара вещей является звуковой.
Вы делаете его правильно.
Я подозреваю, что Вы сталкиваетесь с сетевой проблемой в своем тестировании, и то, что проваленный тест использовал функцию, было совпадением. При закрытии соединения TCP порт остается используемым для небольшого количества времени (30-е), в случае, если там ожидали пакеты, которые еще не были получены (пакеты могут прибыть не в порядке). Это TIME_WAIT
состояние. Чтобы позволить новому серверу сразу перезапустить, установите SO_REUSEADDR
флаг с setsockopt
(в Python существует пример socket
документация).
Мы можем сделать псевдоним с командой группы { list; }
и здесь-строка <<<
перенаправление. Основная цель состоит в том, чтобы перенаправить 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";} <<<'
Отметьте пространство после {
и точка с запятой прежде }
требуются.