Bjoern v/s Gunicorn POST请求

vin*_*vin 4 python performance webserver gunicorn bjoern

不是Bjoern应该更快那个Gunicorn吗?

simple_app.py

from flask import Flask, request, jsonify

app = Flask(__name__)


@app.route('/suggest/', methods=['POST'])
def hello():
    content = request.get_json()
    return jsonify(**content), 200
Run Code Online (Sandbox Code Playgroud)

app_server.py

import bjoern
import os
import signal
from simple_app import app

host = '0.0.0.0'
port = 5000
NUM_WORKERS = 2
worker_pids = []


bjoern.listen(app, host, port)
for _ in xrange(NUM_WORKERS):
    pid = os.fork()
    if pid > 0:
        # in master
        worker_pids.append(pid)
    elif pid == 0:
        # in worker
        try:
            bjoern.run()
        except KeyboardInterrupt:
            pass
        exit()

try:
    for _ in xrange(NUM_WORKERS):
        os.wait()
except KeyboardInterrupt:
    for pid in worker_pids:
        os.kill(pid, signal.SIGINT)
Run Code Online (Sandbox Code Playgroud)

运行Bjoern服务器为:

python app_server.py
Run Code Online (Sandbox Code Playgroud)

运行Gunicorn为:

gunicorn -w 2 --bind 0.0.0.0:5000 simple_app:app --timeout 90
Run Code Online (Sandbox Code Playgroud)

主要统计数据:

Gunicorn:要求7.53毫秒最高10秒的意思

Bjoern:请求1mn 24sec 最高10秒意味着

Gunicorn :: Gunicorn请求持续时间

Gunicorn Stats

比约恩·::

Bjoern请求持续时间

Bjoern Stats

节点的配置都是ec2实例:(使用一个核心运行app_server,另一个核心运行tsung)

Ubuntu 12.04.5 LTS(GNU/Linux 3.2.0-115-virtual x86_64)

vCPU数量:2

Alb*_*era 6

测试瓶+ bjoern,它真的很快.也是瓶子+ gunicorn + meinheld工人

瓶比烧瓶快

瓶子:http://bottlepy.org/docs/dev/

meinheld:https://github.com/mopemope/meinheld

每秒请求数:

bottle-py3 408,379

烧瓶-py3 124,800

info:https www techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext

  • 对于未来的读者来说,在声称瓶子比烧瓶更好之后。我穿过了兔子洞。我发现 Flask 适合任何复杂的项目。另一方面,Bottle 更适合小型服务。希望这可以帮助。:) (3认同)
  • 您可以添加链接吗? (2认同)