502 ошибки после добавляющего модуля к проекту Django, работающему nginx и gunicorn

Вот рекурсивная функция в Bash:

chain() { export chain; local link target; if [[ -z $chain ]]; then chain="$1"; fi; link=$(stat --printf=%N $1); while [[ $link =~ \-\> ]]; do target="${link##*\`}"; target="${target%\'}"; chain+=" -> $target"; chain "$target"; return; done; echo "$chain"; unset chain; }

На нескольких строках:

chain() {
    export chain
    local link target
    if [[ -z $chain ]]
    then
        chain="$1"
    fi
    link=$(stat --printf=%N "$1")
    while [[ $link =~ \-\> ]]
    do
        target="${link##*\`}"
        target="${target%\'}"
        chain+=" -> $target"
        if [[ ! $target =~ / && $1 =~ / ]]
        then
            target="${1%/*}/$target"
        fi
        chain "$target"
        return
    done
    echo "$chain"
    unset chain
}

Примеры:

$ chain d
d -> c -> b -> a
$ chain c
c -> b -> a
$ chain a
a

Это требует stat(1) который не может присутствовать в некоторых системах.

Это перестанет работать, если имена будут содержать обратные галочки, одинарные кавычки, или "->". Это застревает в цикле с циклами символьной ссылки (это могло быть решено с помощью ассоциативного массива в Bash 4). Это экспортирует переменную, названную "цепочкой" без учета к тому, используется ли это уже.

Могут быть другие проблемы с ним.

Править:

Решенный проблема с некоторыми относительными символьными ссылками. Некоторые все еще не работают, но версия ниже не требует, чтобы цель ссылки существовала.

Добавленный версия, которая использует readlink:

chain ()
{
    export chain;
    local target;
    if [[ -z $chain ]]; then
        chain="$1";
    fi;
    target=$(readlink "$1");
    while [[ $target ]]; do
        chain+=" -> $target";
        if [[ ! $target =~ / && $1 =~ / ]]
        then
            target="${1%/*}/$target"
        fi
        chain "$target";
        return;
    done;
    echo "$chain";
    unset chain
}
0
задан 15 July 2011 в 20:13
4 ответа

Вероятно, существует ошибка в модуле который, заставляя django приложение перестать работать полностью. Проверьте, работает ли это вообще.

1
ответ дан 4 December 2019 в 14:42

Я не знаю, применимо ли это к вам, но у меня была аналогичная проблема с nginx и пассажиром, и я не включил свой корневой каталог django (тот, что с manage.py /settings.py/etc) в моем рабочем пути. Я не работал с Gunicorn, но возможно ли вам добавить sys.path.append в этот каталог где-нибудь в вашей конфигурации Gunicorn?

0
ответ дан 4 December 2019 в 14:42

Как вы устанавливали новый модуль? Если вы установили его на свой компьютер разработчика с помощью pip, apt-get и т. Д., Убедитесь, что вы сделали то же самое на своем сервере.

1
ответ дан 4 December 2019 в 14:42

В соединении отказано довольно очевидно. Это означает, что ваш бэкэнд (в данном случае gunicorn) не работает на порту, который вы указали в конфигурации nginx (в данном случае 8020).

Здесь происходит одно из двух. Либо:

  1. gunicorn работает на другом порту, либо
  2. gunicorn не запущен.

Если вы уверены, что это правильный порт, попробуйте запустить gunicorn.

0
ответ дан 4 December 2019 в 14:42

Теги

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