Ich habe Django, Flask und Pyramid in Vorheriger Artikel verglichen und fand Flask gut, also habe ich es sofort versucht.
Wir vergleichen und vergleichen die Funktionen, die gemäß dem Blueprint Tutorial erstellt wurden, das im Python-Webframework Flask als umfangreich gilt. Blueprint ist eine Flask-Funktion, die Ansichten in mehrere kleine Apps (jede Funktion) unterteilt.
Nach dem Erstellen habe ich Apache Bench verwendet, um einen ** Benchmark ** zu erhalten, der PyPy3 2.4 und Python 3.5 vergleicht.
Im Gegensatz zur Standard-Einzelansicht wird ein Ansichtsverzeichnis eingerichtet, und Ansichten für jede Funktion werden in diesem Verzeichnis eingerichtet. Dieses Mal habe ich die Funktionen root
und report
hinzugefügt.
■ Verzeichnisstruktur
Trennen Sie allgemeine Teile wie HTML HEAD- und BODY-Tags, indem Sie sie von "master.html" trennen.
master.html
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset="utf-8" />
<title>{% block title %}{% endblock %} - Hello Flask!</title>
<link type="text/css" rel="stylesheet"
href="{{ url_for('static',
filename='hello.css')}}" />
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
index.html
{% extends "master.html" %}
{% block title %}index{% endblock %}
{% block body %}
<h1>this is index page</h1><br />
<h3>report</h3>
<a href="{{ url_for('report.index') }}">report - index</a><br />
<a href="{{ url_for('report.report_list') }}">report - list</a><br />
{% endblock %}
■ Darstellungsergebnis von index.html
Der Flask-Server wird mit dem Befehl python main.py
gestartet. Verknüpfen Sie die URL für jede Funktion mit main.py.
main.py
# -*- coding: utf-8 -*-
from flask import Flask
from views import root, report
app = Flask(__name__)
#Definieren Sie die URL für jede Funktion
app.register_blueprint(root.app, url_prefix="/")
app.register_blueprint(report.app, url_prefix="/report")
if __name__ == '__main__':
app.run(debug=True)
Definieren Sie die Site-Top-Seite.
root.py
# -*- coding: utf-8 -*-
from flask import render_template, Blueprint
#Der Name des ersten Arguments ist die Vorlagen-URL_Mit dem Namen verknüpft, wenn Sie anrufen
app = Blueprint("index",
__name__,
url_prefix='/<user_url_slug>')
#URL beim Aufrufen einer Vorlage_for('index.index')
@app.route("/")
def index():
return render_template('root/index.html')
report.py
# -*- coding: utf-8 -*-
from flask import Module, render_template, Blueprint
app = Blueprint('report',
__name__,
url_prefix='/<user_url_slug>')
#URL beim Aufrufen einer Vorlage_for('report.index')
@app.route('/', methods=['GET'], strict_slashes=False)
def index():
return 'report index'
#URL beim Aufrufen einer Vorlage_for('report.report_list')
@app.route('/report_list', methods=['GET'], strict_slashes=False)
def report_list():
return 'report - list'
Ich habe debug = False gesetzt und versucht, 10.000 Mal mit 100 Parallelität mit dem Befehl Apache Bench anzufordern. Python 3.5 lief 26% schneller. Da der Server mit dem Befehl python main.py
gestartet wurde, handelt es sich um einen einzelnen Prozessbenchmark. Ich hatte erwartet, dass PyPy mit einer überwältigenden Geschwindigkeit zuschlagen würde, aber als ich den Deckel öffnete, kam ich zu dem mysteriösen Ergebnis, dass Python 3.5 schneller war. Kolben ist "Kolben == 0,10,1". Als nächstes möchte ich mit DB-Zugriff untersuchen.
PyPy3 Bank Ergebnisse
>>>ab -n 10000 -c 100 http://localhost:5000/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: Werkzeug/0.11.2
Server Hostname: localhost
Server Port: 5000
Document Path: /
Document Length: 398 bytes
Concurrency Level: 100
Time taken for tests: 20.783 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 5530000 bytes
HTML transferred: 3980000 bytes
Requests per second: 481.16 [#/sec](mean)
Time per request: 207.829 [ms](mean)
Time per request: 2.078 [ms](mean, across all concurrent requests)
Transfer rate: 259.85 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 2.6 1 74
Processing: 3 205 53.6 199 762
Waiting: 3 205 53.1 199 760
Total: 24 206 53.0 199 763
Percentage of the requests served within a certain time (ms)
50% 199
66% 204
75% 211
80% 214
90% 225
95% 236
98% 295
99% 571
100% 763 (longest request)
++++++++++++++++++++++++++
>>> python --version
Python 3.2.5 (b2091e973da6, Oct 19 2014, 18:30:58)
[PyPy 2.4.0 with GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)]
Python3.5 Bankergebnisse
>>>ab -n 10000 -c 100 http://localhost:5000/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: Werkzeug/0.11.2
Server Hostname: localhost
Server Port: 5000
Document Path: /
Document Length: 398 bytes
Concurrency Level: 100
Time taken for tests: 16.380 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 5530000 bytes
HTML transferred: 3980000 bytes
Requests per second: 610.52 [#/sec](mean)
Time per request: 163.795 [ms](mean)
Time per request: 1.638 [ms](mean, across all concurrent requests)
Transfer rate: 329.70 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 5.8 0 195
Processing: 3 161 44.7 148 475
Waiting: 3 161 44.5 148 475
Total: 59 162 43.9 148 476
Percentage of the requests served within a certain time (ms)
50% 148
66% 151
75% 154
80% 156
90% 239
95% 276
98% 299
99% 322
100% 476 (longest request)
++++++++++++++++++++++++++4
>>> python --version
Python 3.5.0
Wenn der Parallelitätsgrad 1 ist, beträgt die Antwortgeschwindigkeit 1,8 bis 2,5 ms. Bisher ist Flask sehr schnell (・ ㅂ ・) و
Recommended Posts