Tanpa diketahui semua orang, pada 12 Mei 2021, versi baru dari microframework Flask yang terkenal dirilis. Meskipun Flask sepertinya sudah memiliki segalanya, yah, hampir semua yang dibutuhkan untuk sebuah microframework.
Mengantisipasi ketertarikan, dan apa yang baru, saya akan tinggalkan link ke Change log .
Dari fitur penjual otomatis versi baru:
Menurunkan dukungan untuk Python versi 2. Minimum Python 3.6
Dukungan untuk tampilan asynchronous dan callback lainnya seperti penangan kesalahan yang didefinisikan dengan async def. Tampilan sinkron reguler tetap berfungsi tanpa perubahan. Fitur ASGI seperti websockets tidak didukung.
Tambahkan dekorator rute untuk metode API HTTP umum.
@ app.post ("/ login") == @ app.route ("/ login", metode = ["POST"])
Fungsi baru Config.from_file untuk memuat konfigurasi dari format file apapun.
Perintah flask shell mengaktifkan penyelesaian tab seperti yang dilakukan shell python biasa.
Saat menyajikan file statis, browser akan menyimpan cache berdasarkan konten, bukan berdasarkan timer 12 jam. Artinya, perubahan pada konten statis seperti gaya CSS akan langsung terlihat saat dimuat ulang tanpa harus mengosongkan cache.
Pertimbangkan asynchrony
Semuanya akan baik-baik saja, tetapi di awal setelah instalasi, modul asgiref tidak ditemukan. Kami akan menginstalnya dengan tangan.
Sebagai contoh, mari kita tulis aplikasi yang paling sederhana: Ping / Pong. Itu tidak memiliki banyak logika yang masuk akal dan kompleks, itu hanya meniru beberapa pemeriksaan jika layanan tersebut hidup. Selain itu, aplikasi ini akan menjadi patokan.
from flask import Flask
app = Flask(__name__)
@app.get('/')
async def ping():
return {'message': 'pong'}
if __name__ == '__main__':
app.run(host='0.0.0.0')
Menyebarkan
Seperti kata log Perubahan: "Fungsi ASGI seperti websockets tidak didukung."
Artinya, satu-satunya cara untuk menerapkan aplikasi menggunakan gunicorn.
: gunicorn -w 8 --bind 0.0.0.0:5000 app:app
-w 8 - 8
--bind 0.0.0.0:5000 -
: wrk -t 8 -c 100 -d 5 http://localhost:5000
Flask 2.0:
Running 5s test @ http://localhost:5000
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 17.80ms 2.37ms 36.95ms 91.92%
Req/Sec 673.44 163.80 3.86k 99.75%
26891 requests in 5.10s, 4.21MB read
Requests/sec: 5273.84
Transfer/sec: 844.69KB
Flask 2.0:
Running 5s test @ http://localhost:5000
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.91ms 842.62us 21.56ms 89.86%
Req/Sec 2.38k 410.20 7.64k 93.53%
95301 requests in 5.10s, 14.91MB read
Requests/sec: 18689.25
Transfer/sec: 2.92MB
Flask 1.1.2:
Running 5s test @ http://localhost:5000
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.98ms 823.42us 17.40ms 88.55%
Req/Sec 2.37k 505.28 12.23k 98.50%
94522 requests in 5.10s, 14.78MB read
Requests/sec: 18537.84
Transfer/sec: 2.90MB
, 1 2 ( ). Flask 2.0 , dev view . ASGI , uvicorn. .
major , . , . Flask, , Django.
Jika Anda memiliki ide mengapa hasil ini diperoleh, silakan bagikan di komentar.