设置 UWSGI 以在 venv 中运行模块

设置 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 [email protected]: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 项目 --chdir $APP --master

这是我运行此命令后收到的消息:

uWSGI 以 root 身份运行,你可以使用 --uid/--gid/--chroot 选项

* 警告:你正在以 root 身份运行 uWSGI !!!(使用 --uid 标志)
警告:你正在运行没有主进程管理器的 uWSGI * 您的进程数限制为 7890 您的内存页面大小为 4096 字节
检测到的最大文件描述符数量:1024
锁定引擎:pthread 健壮互斥体
thunder 锁定:已禁用(您可以使用 --thunder-lock 启用它)
缺少 -s/--socket 选项并且 stdin 不是套接字。

错误是它似乎无法正确运行或找到我的模块。有人能告诉我如何启动 UWSGI 才能找到我的应用程序吗?

答案1

您可以尝试使用 --module 而不是 -w(效果相同)。否则,只需确保名称正确即可;即传递 wsgi_module_name 或 wsgi_module_name:application_callable_name

不过,您的错误消息实际上并没有表明存在与此相关的问题。还有其他您没有引用的消息吗?

答案2

您只需将 sock 文件添加到命令行即可:

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

相关内容