1
我跟着Linode guide設置了Flask應用程序的UWSGI,並且一切似乎都沒有問題,直到我嘗試將我的應用程序而不是示例之一,當我得到「uWSGI Error Python應用程序未找到」。UWSGI燒瓶:沒有找到Python應用程序
我的文件中/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 -
任何人都可以指向我我正在哪裏錯誤?我花了幾個小時嘗試各種解決方案,但似乎沒有任何工作,我必須省略一些重要的東西,但找不到它。
仍然一樣。爲了以防萬一,使用'application'和'app'試用。 – 2014-09-23 17:42:05
哇,我設法做到了,我加了'應用程序 '以及'應用程序 ',它的工作原理。有人知道爲什麼這是原因,以及爲什麼這個東西必須用這種方式來定義? –
2014-09-23 18:49:31
uWSGI查找可調用的名爲'application'的應用程序。如果你把它稱爲別的東西,它需要知道名字是什麼。 – dirn 2014-09-23 21:52:25