uwsgi:未识别的选项 '--module=MyProject.wsgi:application'

16
我按照https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/uwsgi/的说明操作,一切正常,直到几天前我杀死了uwsgi进程并尝试重新启动。然后它说:
uwsgi: unrecognized option '--module=MyProject.wsgi:application'

我一直在苦苦思索如何解决这个问题... 我已经检查了我的提交历史记录以及启动uwsgi的脚本,没有改变:

#!/bin/bash
# https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/uwsgi/
uwsgi --chdir=/home/MyProject \
    --module=MyProject.wsgi:application \
    --env DJANGO_SETTINGS_MODULE=MyProject.settings \
    --master --pidfile=/tmp/MyProject-masted.pid \
    --socket=/home/MyProject.sock \
    --processes=5 \
    --harakiri=20 \
    --limit-as=128 \
    --max-requests=5000 \
    --vacuum \
    --home=/home/MyProject/env \
    --daemonize=/var/log/uwsgi/MyProject.log

显然发生了一些变化,但我看不出来是什么...我没有运行任何更新,脚本也没有更改...请帮帮我!!!

3个回答

41

你可能需要在命令行中添加--plugins选项才能使用系统安装的uwsgi。至少在Fedora 17上,这对我来说是必要的:

$ uwsgi --http 127.0.0.1:8000 --module=wsgiref.simple_server:demo_app
uwsgi: unrecognized option '--module=wsgiref.simple_server:demo_app'
getopt_long() error
$

但这个可以正常工作:

$ uwsgi --http 127.0.0.1:8000 <strong>--plugins python</strong> --module=wsgiref.simple_server:demo_app
*** Starting uWSGI 1.2.4 (64bit) on [Thu Aug 30 14:09:57 2012] ***
[.. snip]

3
我发现参数的顺序很重要。如果我尝试在传递--plugins python之前传递--wsgi-file参数,它似乎不起作用。我会收到一个消息,上面写着“未识别的参数”。 - Matthew G

15

最近我遇到了这个问题,当我尝试使用Unbuntu 12.04仓库中的uWSGI版本(1.0.3)时。看起来那个版本有点旧了。只要使用pip获取它(1.2.5)即可。

pip install uwsgi

如果您想继续使用Ubuntu版本的uwsgi,请阅读第二个答案! - Christian Aichinger
安装pip版本会终止“sudo service uwsgi start/stop”命令,也会停止从/etc/uwsgi...读取。因此,在执行此操作之前,请先阅读下面的答案。 - Paul Kenjora

0

试试这个

uwsgi --socket /run/uwsgi/mysite.sock --chdir /home/ubuntu/mysite/ --plugin The_OJ.wsgi --chmod-socket=666

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