Назад | Перейти на главную страницу

Настройка UWSGI для запуска модуля в venv

Мне сложно запустить модуль из UWSGI. Это часть моего кода развертывания:

# ENVIRONMENT
/usr/bin/pip install virtualenv
mkdir -p /srv/www/test
/usr/local/bin/virtualenv /srv/www/test/venv
source /srv/www/test/venv/bin/activate
/srv/www/test/venv/bin/pip install --force-reinstall -e git+git@github.com:xyz/project.git#egg=project

Это код для run.py в корне модуля

from project import app

def main():
    """docstring for main"""
    app.run(debug=True)

if __name__ == '__main__':
    main()

Это команда, которую я пытаюсь использовать для ее запуска:

/ usr / local / bin / uwsgi --virtualenv $ ENV --module project --chdir $ APP --master

Это сообщение, которое я получаю после выполнения этой команды:

uWSGI работает как root, вы можете использовать --uid / - gid / - chroot options

* ВНИМАНИЕ: вы запускаете uWSGI как root !!! (используйте флаг --uid)
ВНИМАНИЕ: вы запускаете uWSGI без главного диспетчера процессов * ограничение количества ваших процессов составляет 7890, размер вашей страницы памяти составляет 4096 байт
обнаружен максимальный номер дескриптора файла: 1024
механизм блокировки: устойчивые мьютексы pthread
thunder lock: отключено (вы можете включить его с помощью --thunder-lock)
Параметр -s / - socket отсутствует, а стандартный ввод не является сокетом.

Ошибка в том, что он не запускается или не находит мой модуль правильно. Кто-нибудь, пожалуйста, скажите мне, как мне запустить UWSGI, чтобы найти свое приложение?

Вы можете просто добавить файл sock в командную строку:

/usr/local/bin/uwsgi --virtualenv $ENV --module project --chdir $APP --master -s myapp.sock

Вы можете попробовать --module вместо -w (можно сделать то же самое). В противном случае просто убедитесь, что у вас правильные имена; т.е. передать wsgi_module_name или wsgi_module_name: application_callable_name

Хотя ваше сообщение об ошибке на самом деле не говорит о проблеме, связанной с этим. Есть еще одно сообщение, которое вы не цитировали?