1. 程式人生 > >flask+gevent+gunicorn+nginx 初試

flask+gevent+gunicorn+nginx 初試

1.安裝flask

pip install flask

2.安裝gevent

pip install gevent

3.安裝gunicorn

pip install gunicorn

版本號資訊如下:

[[email protected] ~]# 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

下載原始碼包安裝,版本資訊如下

[[email protected] 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配置

[[email protected] 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'

[[email protected] pythonTest]# 


7.測試指令碼編寫

[[email protected] 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.啟動指令碼

[[email protected] 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)

[[email protected] ~]# 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)

real0m0.078s

user0m0.021s

sys0m0.046s

解決方法:關閉目標伺服器的防火牆

[[email protected] pythonTest]# service iptables stop

Flushing firewall rules:                                   [  OK ]

Setting chains to policy ACCEPT: filter                    [  OK ]

Unloading iptables modules:                                [  OK ]


ok, 這下可以壓力測試了

[[email protected] ~]# 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)

real0m16.316s

user0m0.598s

sys0m1.447s


相關推薦

flask+gevent+gunicorn+nginx 初試

1.安裝flask pip install flask 2.安裝gevent pip install gevent 3.安裝gunicorn pip install gunicorn 版本號資訊如下: [[email protected] ~]# pip li

flask專案Gunicorn + Nginx 進行佈署阿里雲靜態檔案出不來解決方案

使用 Gunicorn + Nginx 進行佈署,雲伺服器為阿里雲 上線後除了主頁能顯示出來,什麼都是返回404,。 解決方案: vi /etc/nginx/sites-available/default 新增以下程式碼: location /static {   &n

Flask+Gunicorn+Gevent+Supervisor+Nginx生產環境部署

flask、gunicorn、gevent、supervisor、nginx 老毛病了,在用某個新框架或新架構之前,總得花時間谷歌和自己折騰一番,才能知道這個框架和架構的優缺點,才會發現自己最喜歡、用的最順手的的一種。近期在學習python,這裏記錄一下自己用的一套python web開發的部署環境。簡介

gunicorn +nginx+python3 部署flask專案(gevent+gevent)--依賴的包

gunicorn +nginx+python3 部署(gevent+gevent)--依賴的包 bind = [&quo

用docker部署flask+gunicorn+nginx

rest unicorn cto status ade 時間 class 不同的 自己 說來慚愧,寫了好幾個flask django項目都是在原型階段直接python app.py 運行的,涉及到部署用nginx和gunicorn 都是讓別人幫我部署的,據說好像說很麻煩的樣

CentOS7部署Flask+Gunicorn+Nginx+Supervisor

Flask MongoDB Gunicorn Nginx Supervisor 1. Git客戶端 Win10安裝git for windows 1.1 設置Git全局參數 打開Git Bash $ git config --global user.name "Alice-HomePC"

flask部署到阿里雲伺服器centos+python3+gunicorn+nginx詳細教程(從本地windows可執行部署伺服器環境上可執行)

前言: 做了flask網站,是因為軟體工程課程的任務,每個小組期末需要交一份的可執行的專案,我們小組做的是flask留言牆,用的flask做後臺邏輯功能,前端h5,javascript,jquery,實現網頁佈局,樣式,前端驗證...做完,想把這個網站掛到外網上,就需要伺服器...這裡用了阿

Gunicorn + Nginx部署FLask專案

一,系統環境 ubuntu 16.04系統,雲伺服器為阿里雲 二, Gunicorn Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP伺服器 從Ruby的獨角獸(Unicorn )專案移植 該Gunicorn伺服器與各種Web框架相容,實現非常簡單,輕量級的資

Django + Gunicorn + Nginx 部署 Ubuntu 服務器

default sql 配置文件 str 原來 ack 建數據庫 ubunt make 自定義 Django + Gunicorn + Nginx 部署服務器 獲取騰訊雲 root權限 本人的服務器使用的是騰訊雲,騰訊雲默認是沒有開放 root 用戶的,我們來創建 root

centos7.4 部署flask專案之 Nginx

centos7.4 部署flask專案之 Nginx 遠端部署flask專案nginx的基操 nginx的基本常用使用命令 小白你過來一下 遠端部署flask專案nginx的基操 因為nginx公司有內部專用版本,

基於ubuntu 16.04系統,使用 Gunicorn + Nginx 進行佈署,雲伺服器為阿里雲 學習目標

阿里雲伺服器 進入控制檯,檢視例項建立情況 給安全組配置規則,新增5000埠(一併加上5001埠) 利用命令列進行遠端伺服器登入 ssh 使用者名稱@ip地址 相關環境安裝 以下操作都在遠端伺服器上進行操作 (ubuntu 16.04) 先更新 ap

django + gunicorn+ nginx部署

部署環境: python3.6 + 騰訊雲伺服器 開始用uwsgi部署,不太通用,坑賊多,阻礙了很長時間。最後還是選擇了gunicorn。 安裝django,編寫程式碼,除錯執行通過。 ip:port訪問成功 安裝gunicorn & 配置gunic

使用flask開發RESTful架構的api伺服器端(5)–部署flask應用到nginx

nginx:一個高效能的http和反向代理伺服器,在高併發方面有良好的表現; wsgi:全稱是web server gateway interface,它是伺服器程式和應用程式之間的一個約定,它規定了兩者各實現什麼功能,以便它們能夠配合使用,作為中介軟體粘合伺服器程式和應用程式; gunicorn:一個開源

用tornado將flask部署到Nginx

【flask_app.py】 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world():

阿里雲伺服器部署 之 部署flask生成的hello_world (ubuntu16.04 + flask + python3 + gunicorn)

首先要搭建環境,你要有一個阿里雲伺服器,並且在本地已經有了hello_world 程式,下面要做的就是在阿里雲伺服器上重新搭建一遍本地的環境。 先簡單的說一下阿里雲伺服器,我自己買的是雲伺服器ESC,需要配置一下安全組規則,就是埠,按下圖配置即可,最重要的是22和80埠。 然後就是我們

使用flask開發RESTful架構的api伺服器端–部署flask應用到nginx

原文地址:http://www.mrhaoting.com/?p=199 通過前幾章的介紹,大概瞭解了怎樣利用flask框架來開發服務端後端,但flask只是一個web框架,提供使用者便捷的開發方式,它並不是一個真正的web伺服器程式,想要這個服務端應用能夠支援高併發、

Nginx學習之十四-GDB除錯Nginx初試

本文的測試環境: Win7+虛擬機器VMWareVMware-workstation-full-7.1.4-385536+Ubuntu12.04 Nginx-1.4.0 要想有效的研究Nginx原始碼,必須要動手除錯,GDB就是有用的利器。下面簡要介紹用GDB除錯Ngi

Django + Gunicorn + Nginx 部署之路

前言 最近,我已經成功將我的個人網站從 Flask 遷移到 Django 了,最早接觸 Django 的時候大概是在 4 年前,我記得那個時候 Django 中的路由配置使用 正則 來進行的,但是我有特別煩這個東西,所以就果斷棄坑了。然後今年年初的時候,我用 Flask 寫了一個我的個人網站,剛開始的時候

docker實戰docker+python3.5+flask+gunicorn+gevent+nginx base image:centos

docker部署flask應用程式    簡單的在本地測試使用docker,為了方便記憶特此記錄,本文構建的映象沒有通過dockerfile來獲取映象,本文的操作都是使用sudo進行操作,普通使用者在centos系統好像不起作用,具體原因未查明。測試環境:         作

nginx+django+gunicorn+gevent+supervisor

nginx django gunicorn gevent安裝環境介紹: python2.7.10 django1.7.9 linux CentOS release 6.5 (Final) 64 假設我的項目位置為/var/www/myweb 服務器IP為192.168.0.100