1.安装flask
pip install flask
2.安装gevent
pip install gevent
3.安装gunicorn
pip install gunicorn
版本号信息如下:
[root@rs-2 ~]# pip list
Flask (0.10.1)
gevent (1.0.1)
greenlet (0.4.2)
gunicorn (18.0)
pip (1.5.5)
setuptools (3.6)
4.安装nginx
下载源码包安装,版本信息如下
[root@rs-2 sbin]# ./nginx -v
nginx version: nginx/1.7.0
5.nginx配置反向代理
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
try_files @uri @pp;
}
location @pp {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:5000;
}
所有请求转发到gunicorn监听的5000上。
6.gunicorn配置
[root@rs-2 pythonTest]# cat gun.conf
import os
bind='127.0.0.1:5000'
workers=4
backlog=2048
worker_class="gevent" #sync, gevent,meinheld
debug=True
proc_name='gunicorn.pid'
pidfile='/var/log/gunicorn/debug.log'
loglevel='debug'
[root@rs-2 pythonTest]#
7.测试脚本编写
[root@rs-2 pythonTest]# cat run_test.py
from flask import Flask
from flask import render_template_string
import os
from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)
@app.route("/")
def index():
return "Hello World"
app.wsgi_app = ProxyFix(app.wsgi_app)
if __name__ == "__main__":
app.run()
8.启动脚本
[root@rs-2 pythonTest]# gunicorn -c gun.conf run_test:app
看到如下部分输入 2014-05-12 10:29:41 [30260] [INFO] Listening at: http://127.0.0.1:5000 (30260)
2014-05-12 10:29:41 [30260] [INFO] Using worker: gevent
2014-05-12 10:29:41 [30265] [INFO] Booting worker with pid: 30265
2014-05-12 10:29:41 [30266] [INFO] Booting worker with pid: 30266
2014-05-12 10:29:41 [30267] [INFO] Booting worker with pid: 30267
2014-05-12 10:29:41 [30268] [INFO] Booting worker with pid: 30268
监听本机的5000端口,
工作模式为gevent,
开启4个进程
9.压力测试
在另一台虚拟上进行用ab模拟并发请求
报错:apr_socket_recv: No route to host (113)
[ root@rs-1 ~]# time ab -n 200 -c 200 http://172.16.3.92/
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.16.3.92 (be patient)
apr_socket_recv: No route to host (113)
解决方法:关闭目标服务器的防火墙
[ root@rs-2 pythonTest]# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
ok, 这下可以压力测试了