flask+gevent+gunicorn+nginx 初试
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
监听本机的5000port,
工作模式为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 <$Revision: 1554214 $>
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)
real 0m0.078s
user 0m0.021s
sys 0m0.046s
解决方法:关闭目标server的防火墙
[root@rs-2 pythonTest]# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
ok, 这下能够压力測试了
[root@rs-1 ~]# time ab -n 2000 -c 200 http://172.16.3.92/
This is ApacheBench, Version 2.3 <$Revision: 1554214 $>
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)
Completed 200 requests
Completed 400 requests
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests
Server Software: nginx/1.7.0
Server Hostname: 172.16.3.92
Server Port: 80
Document Path: /
Document Length: 11 bytes
Concurrency Level: 200
Time taken for tests: 16.273 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 334000 bytes
HTML transferred: 22000 bytes
Requests per second: 122.90 [#/sec] (mean)
Time per request: 1627.313 [ms] (mean)
Time per request: 8.137 [ms] (mean, across all concurrent requests)
Transfer rate: 20.04 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 40 486.7 1 8992
Processing: 276 1032 250.5 1028 6300
Waiting: 273 1032 250.5 1027 6300
Total: 283 1072 618.1 1029 15292
Percentage of the requests served within a certain time (ms)
50% 1029
66% 1055
75% 1074
80% 1096
90% 1210
95% 1245
98% 1361
99% 2416
100% 15292 (longest request)
real 0m16.316s
user 0m0.598s
sys 0m1.447s
flask+gevent+gunicorn+nginx 初试的更多相关文章
- flask +gevent+nginx+Gunicorn+supervisor部署flask应用
上篇 可以完美部署flask ,但是视乎在结合gevent+apscheduler 实现异步非阻塞后台和定时任务的时候视乎不是那么完美.请教了前辈,决定使用flask+gevent+nginx+g ...
- 基于flask+gunicorn+nginx来部署web App
基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...
- 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署
本项目实现的是类似于ins的图片分享网站.继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤: 1 前期准备 2 将运行网站的代码从github上下载过来 3 下载依赖 ...
- Django + Gunicorn + Nginx 部署之路
前言 最近,我已经成功将我的个人网站从 Flask 迁移到 Django 了,最早接触 Django 的时候大概是在 4 年前,我记得那个时候 Django 中的路由配置使用 正则 来进行的,但是我有 ...
- Flask+gevent 异步 WEB 架构
:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...
- gunicorn+nginx配置方法
对于gunicorn+nginx的配置,理解他们之间的关系很重要,以及最后如何确认配置结果是正确的也很重要 nginx 配置文件: 修改这个配置文件有3个用处: 假设服务器本身的Ip是A称为ip-A, ...
- 11: Django + gunicorn + Nginx 的生产环境部署
1.1 gunicorn介绍 1.Gunicorn 1. Gunicorn是使用Python实现的WSGI服务器, 直接提供了http服务, 并且在woker上提供了多种选择, gevent, e ...
- 初次部署django+gunicorn+nginx
初次部署django+gunicorn+nginx 博客详细地址 https://www.cnblogs.com/nanrou/p/7026802.html 写在前面,这只是我所遇到的情况,如果有 ...
- Django + Gunicorn + Nginx 部署 Ubuntu 服务器
Django + Gunicorn + Nginx 部署服务器 获取腾讯云 root权限 本人的服务器使用的是腾讯云,腾讯云默认是没有开放 root 用户的,我们来创建 root 用户. 创建 roo ...
随机推荐
- 基于Hadoop的地震数据分析统计
源码下载地址:http://download.csdn.net/detail/huhui_bj/5645641 opencsv下载地址:http://download.csdn.net/detail/ ...
- Jersey框架二:Jersey对JSON的支持
Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...
- HTML中的div标签
在网页制作过程过中,能够把一些独立的逻辑部分划分出来.放在一个<div>标签中,这个<div>标签的作用就相当于一个容器. 为了使逻辑更加清晰,我们能够为这一个独立的逻辑部分设 ...
- 实战:sqlserver 2008 扩展事件-XML转换为标准的table格式
--假设已经存在Event Session删除 IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQu ...
- Android多线程文件下载器
本应用实现的是输入文件的网络的地址,点击button開始下载,下载过程中有进度条和后面的文本提示进度, 下载过程中button不可点击,防止反复的下载,完成下载后会进行Toast的提示显示, 而且回复 ...
- DirectX Sample-ConfigSystem中采用配置文件进行游戏设置
这个例子是一个撞球系统,碰撞部分也值得学习,不过最重要的还是其配置部分,配置文件为config.txt,其中包括: Requirements:所需配置 propertyset:预定义的设置,通过名字引 ...
- ThreadPoolExecutor的应用和实现分析(中)—— 任务处理相关源码分析 线程利用(转)
前面一篇文章从Executors中的工厂方法入手,已经对ThreadPoolExecutor的构造和使用做了一些整理.而这篇文章,我们将接着前面的介绍,从源码实现上对ThreadPoolExecuto ...
- SetCookies, cookie规范注册表和cookie存储将会优先于设置在HTTP客户端级别中默认的那些
遇到下面问题解决方法: Hey? 404 抱歉,你输入的网址可能不正确,或者该网页不存在. 7 秒后返回首页 使用独立的本地执行上下文来实现对每个用户(或每个线程)状态的管理. 定义在本地内容中的co ...
- 《JavaScript设计模式与开发实践》读书笔记之模板方法模式
1. 模板方法模式 1.1 面向对象方式实现模板方法模式 以泡茶和泡咖啡为例,可以整理为下面四步 把水煮沸 用沸水冲泡饮料 把饮料倒进杯子 加调料 首先创建一个抽象父类来表示泡一杯饮料 var Bev ...
- 怎样从Hadoop安全模式中进入正常模式
问题: 在Hadoop中,新建一个文件夹,报错了,提示mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot c ...