псевдоним/функция с параметрами командной строки

Я устал от ввода manage.py startserver 10.211.55.4:4000, так решенный для создания псевдонима для этого. Только вещь: порт когда-то изменяется. Таким образом, я сделал это в профиле удара:

function runserver() {
   python manage.py runserver 10.211.55.4:$1
}

Но затем когда я называю его: runserver 3000, это запускает его, но сразу прекращает говорить:

"Ошибка: Тот IP-адрес не может быть присвоен -". Однако, если я ввожу то же самое прямо в командную строку, это работает без, жалуется.

1
задан 4 June 2014 в 01:40

4 ответа

Вроде Вашей исходной попытки Вы могли скорректировать ту функцию к следующему:

function runserver() {
    python manage.py runserver 10.211.55.4:$PORT
}

и затем назовите его как так:

PORT=3000 runserver
3
ответ дан 3 December 2019 в 06:33

Это - на самом деле ошибка, которую Вы возвращаете от 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
}

Сторона удара вещей является звуковой.

3
ответ дан 3 December 2019 в 06:33

Вы делаете его правильно.

Я подозреваю, что Вы сталкиваетесь с сетевой проблемой в своем тестировании, и то, что проваленный тест использовал функцию, было совпадением. При закрытии соединения TCP порт остается используемым для небольшого количества времени (30-е), в случае, если там ожидали пакеты, которые еще не были получены (пакеты могут прибыть не в порядке). Это TIME_WAIT состояние. Чтобы позволить новому серверу сразу перезапустить, установите SO_REUSEADDR флаг с setsockopt (в Python существует пример socket документация).

0
ответ дан 3 December 2019 в 06:33

Мы можем сделать псевдоним с командой группы { 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";} <<<'

Отметьте пространство после { и точка с запятой прежде } требуются.

0
ответ дан 3 December 2019 в 06:33

Другие вопросы по тегам:

Похожие вопросы: