基于python的web項(xiàng)目,常見(jiàn)的部署方法有:
fcgi:用spawn-fcgi或者框架自帶的工具對(duì)各個(gè)project分別生成監(jiān)聽(tīng)進(jìn)程,然后和http服務(wù)互動(dòng)。
wsgi:利用http服務(wù)的mod_wsgi模塊來(lái)跑各個(gè)project。<p>
不過(guò)還有個(gè)uwsgi,它既不用wsgi協(xié)議也不用fcgi協(xié)議,而是自創(chuàng)了一個(gè)uwsgi的協(xié)議,據(jù)作者說(shuō)該協(xié)議大約是fcgi協(xié)議的10倍那么快。uWSGI的主要特點(diǎn)如下:
超快的性能。
低內(nèi)存占用(實(shí)測(cè)為apache2的mod_wsgi的一半左右)。
多app管理。
詳盡的日志功能(可以用來(lái)分析app性能和瓶頸)。
高度可定制(內(nèi)存大小限制,服務(wù)一定次數(shù)后重啟等)。
安裝uwsgi
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make
出現(xiàn)錯(cuò)誤:
plugins/python/python_plugin.c:1884: error: statement with no effect
plugins/python/python_plugin.c:1888: error: ‘struct uwsgi_python’ has no member named ‘gil_release’
plugins/python/python_plugin.c:1888: error: called object ‘<erroneous-expression>’ is not a function
plugins/python/python_plugin.c:1888: error: statement with no effect
make: *** [all] Error 1
解決方法:
yum install python-devel