uwsgi选项--wsgi-file和--module未被识别。

27

我正在尝试使用uwsgi运行Django应用程序。我发现大多数指南都提到了“--wsgi-file”和“--module”来指定应用程序,但是在"uwsgi"中没有提到这些选项,当我尝试使用它们时:

uwsgi -s /tmp/uwsgi.sock --master --module myapp.wsgi
uwsgi: unrecognized option '--module'
getopt_long() error

uwsgi -s /tmp/uwsgi.sock --master --wsgi-file myapp/wsgi.py
uwsgi: unrecognized option '--wsgi-file'
getopt_long() error

没有任何一个选项时,我得到的结果是:

uwsgi -s /tmp/uwsgi.sock --master 
*** Starting uWSGI 2.0.9 (64bit) on [Fri Jul 10 11:12:04 2015] ***
compiled with version: 4.4.7 20120313 (Red Hat 4.4.7-11) on 23 April 2015 19:31:15
os: Linux-2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Mar 10 17:01:00 EDT 2015
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 2
detected binary path: /usr/sbin/uwsgi
your processes number limit is 1024
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 5
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145536 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 26597)
spawned uWSGI worker 1 (pid: 26598, cores: 1)

为什么这些选项没有被识别?我应该如何指定要加载的应用程序?这是什么垃圾软件?我应该回到使用Gunicorn吗?


你是如何安装uwsgi的?使用pip吗? - ThrowsException
1
@aaa90210 我和你一样也因为这个问题而苦恼。哈哈,大多数的解决方案都不起作用,尽管在网上看到了无数的例子。感谢您发布这篇文章。 - NYCeyes
2个回答

46

这意味着 uWSGI 的 Python 插件未安装或未加载。要进行验证,请运行以下命令:

$ uwsgi --plugins-list
一般情况下,如果您已经安装了build-essential和python-dev等软件包,可以通过以下方式进行安装:

apt-get install

$ pip install uwsgi

Debian 或者 Ubuntu 上,你也可以通过以下方式进行安装:

$ apt-get install uwsgi-plugin-python

Linux Alpine 上,您目前需要指定它的位置:

$ apk add --update uwsgi-python
$ uwsgi --plugins-dir /usr/lib/uwsgi/ --need-plugin python --plugins-list
*** uWSGI loaded generic plugins ***

*** uWSGI loaded request plugins ***
0: python
...

或者你可以通过指定完整路径来完成:

$ uwsgi --plugin /usr/lib/uwsgi/python_plugin.so --plugins-list

4
对我来说仍然不起作用。安装了uwsgi-plugin-pythonuwsgi-plugin-python3后,运行uwsgi --http-socket :9090 --wsgi-file ./respond.py --plugin /usr/lib/uwsgi/plugins/python3_plugin.so仍然会得到“未识别的选项”响应。 - Shadur
5
类似问题困扰过我,解决方法是在任何特定于插件的参数之前指定“--plugin ...”参数。对于您的情况,您可以尝试以下命令:uwsgi --http-socket :9090 --plugin /usr/lib/uwsgi/plugins/python3_plugin.so --wsgi-file ./respond.py - Magnus Teekivi
@shadur,您需要在安装之后的命令中包含--plugin python。https://dev59.com/gJHea4cB1Zd3GeqPrZz9#34638770 - Robert Bracco

3

根据您安装uwsgi的方式,您可能还需要安装Python插件。例如:

apt-get install uwsgi-plugin-python

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接