Ini hidup! Flask 2.0 dirilis

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.








All Articles