1. 程式人生 > >python高效能框架-japronto淺測

python高效能框架-japronto淺測

前言:很久之前就聽說python有個web框架可以媲美go、nodejs等高效能語言,週末有空特地看了下。 -------- 背景瞭解: japronto是一個全新的,為微服務量身打造的python微框架,關於它的詳細介紹可以看轉載的這篇文章《用 Python 實現每秒處理 120 萬次 HTTP 請求》http://blog.csdn.net/u013128262/article/details/77415968,作者自己做了較詳細的介紹。 官方英文介紹:Screaming-fast Python 3.5+ web micro-framework integrated with pipelining HTTP server based on uvloop and picohttpparser. 安裝 機器:騰訊雲香港機房1核1G1M(最便宜那種)
作業系統:ubuntu 16.04 python版本:python 3.5 sudo apt install python3-pip 安裝python3的pip pip 安裝: 安裝失敗,連續換了幾個源都找不到這個框架,遂放棄直接pip安裝的思路。 原始碼安裝: python setup.py install 即可。 hello world!: japronto用起來和flask有點像,一個基礎的hello world如下:
from japronto import Application


def hello(request):
    return request.Response(text
='Hello world!') app = Application() app.router.add_route('/', hello) app.run(debug=True)

python3 hello.py 直接啟動。 curl 127.0.0.1:8080 可以看到服務起來了。 壓測一下: 這裡我們選擇wrk。 安裝非常簡單: git clone https://github.com/wg/wrk.git 進入目錄,直接make即可生成二進位制可執行檔案。 來一發小的壓測:

這種最基礎的機器還能達到8k qps 持續壓20min看看:
也是能穩定到7k qps。 因為我的雲主機比較差,7k qps的意義看不出來,我們這裡就拿flask做個對比
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

邏輯幾乎一模一樣,最簡單的那種,看看我們的效果如何:

僅有550+ qps。 ----------------------------------- japronto現在沒有一家公司在現網大規模使用,但是其高效能的表現是非常不俗的,這得益於其核心模組都是用c實現的。