- 通過(guò)pip install uwsgi 和brew install uwsgi的區(qū)別
pip install uwsgi 安裝在python的目錄下,在命令窗口下輸入uwsgi會(huì)提示找不到該命令(MAC 環(huán)境下是這樣谎懦,在服務(wù)器上都是直接通過(guò)pip 來(lái)安裝)讼渊。
brew install uwsgi 會(huì)將uwsgi安裝在/usr/local/Cellar/目錄下甘凭,在全局可以直接使用uwsgi執(zhí)行各種命令涯竟。
- uwsgi命令
uwsgi --http-socket :8081 --plugin python --wsgi-file main.py --stats 127.0.0.1:8888 --daemonize /var/log/uwsgi.log
--http-socket :8081 指定端口號(hào)
--wsgi-file main.py 指定啟動(dòng)文件
--plugin python 指定使用python插件解析(遇到 unrecognized option ‘--uwsgi-file‘如 --module , --wsgi-file , --callable 等都可以使用該命令指定解析器实幕,在Mac上使用brew 安裝的uwsgi執(zhí)行命令會(huì)提示有一些配置參數(shù)找不到)
deMacBook-Pro:site-packages anonyper$ uwsgi --http-socket :8081 --wsgi-file main.py
uwsgi: unrecognized option `--wsgi-file'
getopt_long() error
deMacBook-Pro:site-packages anonyper$
--stats 127.0.0.1:8888 在127.0.0.1:8888可以用過(guò)uwsgitop查看服務(wù)器性能狀態(tài)
--daemonize /var/log/uwsgi.log 記錄日志到該文件內(nèi)(加了該命令后普通的殺掉進(jìn)程之后服務(wù)還會(huì)重啟规惰,需要強(qiáng)制kill -9 才能殺掉,因?yàn)閐aemonize增加守護(hù)進(jìn)程,使web服務(wù)更加穩(wěn)定)
--disable-loggin, 不記錄請(qǐng)求信息的日志泉蝌。只記錄錯(cuò)誤以及uWSGI內(nèi)部消息到日志中歇万。
- 在執(zhí)行的py中需要有application方法或者使用web.py時(shí)轉(zhuǎn)換一個(gè)application對(duì)象
如下
#!/usr/bin/python
def application(env, start_response):
start_response('200 OK', [('Content_Type', 'text/html')])
return "Congraduation!!! uWSGI Testing OK!!!"
或者
# -*- coding: utf-8 -*-
"""
@file: main.py
@time: 18-6-12
"""
import web
urls = (
'/test/hello', 'hello',
)
app = web.application(urls, globals())
class hello:
def GET(self):
web.header("Access-Control-Allow-Origin", "*")
post_data = dict(web.input())
name = post_data.get('name', 'zhangsan')
return 'Hello, ' + 'zhangsan' + '!' + name
if __name__ == "__main__":
app.run()
以上都是main_test.py
的內(nèi)容揩晴,執(zhí)行命令如下:
uwsgi --http-socket :8081 --plugin python --wsgi-file main_test.py
- uwsgitop查看服務(wù)器性能(雖然沒(méi)看明白有啥用)
安裝uwsgitop可以使用pip install uwsgitop或者brew install uwsgitop
uwsgitop 127.0.0.1:8888
使用該命令需要在使用uwsgi命令時(shí)增加--stats 127.0.0.1:8888
的命令
- 通過(guò)配置文件,啟動(dòng)uwsgi服務(wù)
定義一個(gè)xxx.ini的文件贪磺,使用key=value的方式來(lái)寫(xiě)配置參數(shù)硫兰。然后在命令行中輸入uwsgi xxx.ini(uwsgi --ini xxx.ini)如:
[uwsgi]
http-socket = :8081
plugin = python
wsgi-file = ./main_test.py
processes = 4 #workers個(gè)數(shù),也是進(jìn)程數(shù)
threads = 4 # 線程數(shù)
max-request = 20480
等價(jià)于在命令行輸入
uwsgi --http-socket :8081 —plugin python --wsgi-file main.py --processes 4 --threads 4 --max-request 20480
- 其他配置
--master(-M), 啟動(dòng)主進(jìn)程寒锚,方便管理所有進(jìn)程劫映, 可以配合--pidfie 使用。方便停止(uwsgi --stop /tmp/uwsgi.pid)/重啟uwsgi ( uwsgi --reload /tmp/uwsgi.pid)
--listen (-l), 內(nèi)核監(jiān)聽(tīng)(listen)網(wǎng)絡(luò)隊(duì)列的長(zhǎng)度刹前,受文件操作系統(tǒng)最大的網(wǎng)絡(luò)連接數(shù)(net.core.somaxconn) 的限制泳赋, 長(zhǎng)度越大意味著在高并發(fā)的環(huán)境下,丟失請(qǐng)求越少喇喉。
--memory-report, 開(kāi)啟內(nèi)存占用報(bào)告(uwsgitop中可以看到)
- 參考消息
http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html