首页 文章

使用UWSGI的Flask:找不到Python应用程序

提问于
浏览
1

我已经按照Linode guide设置了带有Flask应用程序的UWSGI,一切似乎没问题,直到我尝试将我的应用程序而不是样本应用程序,当我得到"uWSGI Error Python application not found"时 .

/srv/www/xxx.com/xxx/ 中我的文件结构是:

app/
    __init__.py
uwsgi.py

__init__.py 文件包含运行应用程序的行:

if __name__ == '__main__':
    app.run()

uwsgi.py 导入应用程序:

#!flask/bin/python

from app import app

if __name__ == "__main__":
    app.run(debug = False)

当我手动尝试运行 python uwsgi.py 应用程序似乎工作,所以没有错误或错误的导入 . 如果我将 uwsgi.py 的内容更改为类似的内容(来自示例):

import os
import sys

sys.path.append('/srv/www/example.com/application')

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/example.com/.python-egg'

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

该应用程序似乎运行,因此UWSGI和nginx正常运行并运行 uwsgi.py 文件,但不是当我将其指向我的应用程序时 .

我的uwsgi配置:

<uwsgi>
    <plugin>python</plugin>
    <socket>/run/uwsgi/app/xxx.com/xxx.com.socket</socket>
    <pythonpath>/srv/www/xxx.com/application/xxx/</pythonpath>
    <app mountpoint="/">

        <script>uwsgi</script>

    </app>
    <master/>
    <processes>4</processes>
    <harakiri>60</harakiri>
    <reload-mercy>8</reload-mercy>
    <cpu-affinity>1</cpu-affinity>
    <stats>/tmp/stats.socket</stats>
    <max-requests>2000</max-requests>
    <limit-as>512</limit-as>
    <reload-on-as>256</reload-on-as>
    <reload-on-rss>192</reload-on-rss>
    <no-orphans/>
    <vacuum/>
</uwsgi>

我的nginx配置:

server {
        listen          80;
        server_name     $hostname;
        access_log /srv/www/xxx.com/logs/access.log;
        error_log /srv/www/xxx.com/logs/error.log;

        location / {
            uwsgi_pass      unix:///run/uwsgi/app/xxx.com/xxx.com.socket;
            include         uwsgi_params;
            uwsgi_param     UWSGI_SCHEME $scheme;
            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;

        }

        location /static {
            root   /srv/www/xxx.com/public_html/static/;
            index  index.html index.htm;

        }

}

这是uwsgi错误日志:

added /srv/www/xxx.com/application/xxx/ to pythonpath.
- unable to load app 0 (mountpoint='/') (callable not found or import error)
- *** no app loaded. going in full dynamic mode ***
- *** uWSGI is running in multiple interpreter mode ***
- spawned uWSGI master process (pid: 21982)
- spawned uWSGI worker 1 (pid: 21990, cores: 1)
- set cpu affinity for worker 1 toTue Sep 23 16:51:19 2014 -  0Tue Sep 23 16:51:19 2014 -
- spawned uWSGI worker 2 (pid: 21991, cores: 1)
- *** Stats server enabled on /tmp/stats.socket fd: 14 ***
- set cpu affinity for worker 2 toTue Sep 23 16:51:19 2014 -  0Tue Sep 23 16:51:19 2014 -

任何人都可以指出我在哪里犯错误?我花了几个小时尝试各种解决方案,但似乎没有任何工作,我必须省略一些重要但无法找到它 .

1 回答

  • 1

    尝试添加 <callable>application</callable>

相关问题