
Flask 3.1 là phiên bản mới nhất của framework web Python nhẹ nhất — và là một trong những dự án được tải nhiều nhất trên PyPI (trên 20 triệu tải mỗi tháng). Ra mắt tháng 11/2024, Flask 3.1 kế thừa nền tảng 3.x đã loại bỏ Python 3.7, chuyển sang kiến trúc Sans-IO (tách logic cốt lõi khỏi transport HTTP), và bổ sung hàng loạt cải tiến về hiệu suất, bảo mật cookie, và trải nghiệm lập trình viên. Đây là thời điểm lý tưởng để bắt đầu dự án web Python mới với Flask.

Kiến trúc Sans-IO: Tách biệt logic cốt lõi
Flask 3.0 chuyển đổi cốt lõi sang mô hình Sans-IO: lớp Flask (concrete) chứa toàn bộ logic HTTP, còn Scaffold (base class) chỉ chứa cấu hình, routing, teardown handlers — không biết đến request/response thực tế. Điều này cho phép tạo app không cần WSGI: test trực tiếp, dùng với ASGI (qua Quart), hoặc tích hợp vào worker queue. Flask 3.1 tiếp tục hoàn thiện bằng cách bỏ __version__ attribute, khuyến khích dùng importlib.metadata.version("flask") — một pattern tiêu chuẩn Python hiện đại.
Bảo mật nâng cao: Cookie partitioned & key rotation
Hai tính năng bảo mật nổi bật trong 3.1:
- Partitioned Cookies (CHIPS/CT, RFC 1062): Cookie session giờ có thể đặt
Partitionedqua configSESSION_COOKIE_PARTITIONED. Cookie chỉ đọc/ghi trong context gốc (top-level site), không chia sẻ với iframe nhúng — chống chặn cross-site data leak. Đây là phản hồi trực tiếp trước yêu cầu của Google’s Chrome Privacy Sandbox. - Secret key rotation (
SECRET_KEY_FALLBACKS): Danh sách khóa dự phòng để xác minh session đã ký bởi khóa cũ. Khi rotate khóa chính (ví dụ sau suspected compromise), session cũ vẫn hợp lệ cho đến khi hết hạn — không bắt buộc user đăng nhập lại. Extension cần chủ động hỗ trợ, nhưng Flask core đã cung cấp infrastructure.

Resource limits và xử lý lỗi HTTP
Flask 3.1 mở rộng kiểm soát resource qua MAX_FORM_MEMORY_SIZE và MAX_FORM_PARTS — giới hạn bộ nhớ RAM lưu form-data upload và số field tối đa. Request.max_content_length nay cấu hình được per-request (không chỉ global), cho phép endpoint nhận file lớn 50MB endpoint chỉ cần 2MB trong khi endpoint API thông thường giữ 1MB.
Cải thiện error handling: logging giờ hỗ trợ injecting request ID vào log record tự động qua X-Request-Id header. Custom error pages trong blueprint (Blueprint.errorhandler) hoạt động mượt mà hơn — định tua về error handler của blueprint chứa view lỗi, không phải app-level handler.
Performance và async
Flask 3.1 không thêm native async view handler mới (đã có từ 3.0), nhưng cải tiến stream_with_context: streaming response nay hoạt động trong async view mà không lỗi (GHSA-68rp-wp8r-4726). Điều này mở đường cho SSE (Server-Sent Events) và streaming file response qua ASGI server (Uvicorn, Hypercorn).
Đội Flask cũng tối ưu werkzeug dependency: minimum từ 3.1, bao gồm cải tiến routing algorithm (RB-tree), giảm 15% CPU cho routing-heavy apps.
Blueprints và cấu trúc ứng dụng lớn
Flask luôn mạnh ở Blueprint — module tổ chức route, template, static files theo domain. 3.1 tiếp tục cải thiện: Blueprint.open_resource và Flask.open_resource nhận parameter encoding (mặc định utf-8), fix bug với file cấu hình không phải ASCII. url_for trong blueprint tạo URL chính xác hơn với SERVER_NAME và SUBDOMAIN_MATCHING cấu hình nâng cao.
Bắt đầu nhanh với Flask 3.1
Cài đặt tối thiểu:
python3 -m venv venv
source venv/bin/activate
pip install "Flask>=3.1"
Ứng dụng “Hello World”:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Xin chào Flask 3.1</h1>"
Chạy: flask --debug run. Debug mode tự động reload khi code thay đổi và cung cấp interactive debugger trong browser (KHÔNG dùng production). Triển khai production qua gunicorn -w 4 -b 0.0.0.0:8000 app:app hoặc dùng deployment guides.
Mở rộng với Flask Extensions
Flask không bao gồm ORM, form validation, auth — mà dựa vào hệ sinh thái extension:
- Flask-SQLAlchemy: ORM + SQLite/PostgreSQL/MySQL tích hợp sẵn. Docs
- Flask-Login: Session auth, login_required decorator, remember me.
- Flask-Migrate: Alembic database migration tự động.
- Flask-WTF: Form validation + CSRF protection (ItsDangerous).
- Flask-CORS: Cross-Origin Resource Sharing cho API.
So sánh Flask với FastAPI
| Đặc tính | Flask 3.1 | FastAPI |
|---|---|---|
| Loại | WSGI (sync-first) | ASGI (async-first) |
| ORM | Chọn (SQLAlchemy, etc.) | Không (dùng SQLModel/Pydantic) |
| Validation | Flask-WTF / thủ công | Pydantic tự động |
| Docs API | Cần extension | Swagger/ReDoc tích hợp |
| Learning curve | Thấp, hướng dẫn rõ ràng | Trung bình |
| Extension hệ sinh thái | Rất lớn | Đang phát triển |
| Performance raw | Fast (WSGI) | Nhanh hơn (ASGI async) |
Flask vẫn là lựa chọn phổ biến nhất để học web Python — docs dài, ví dụ đa dạng, cộng đồng khổng lồ. FastAPI phù hợp hơn cho API service cao throughput. Nhiều dự án chọn Flask cho MVP, sau đó migration sang FastAPI khi cần scale.
Kết luận
Flask 3.1 giữ vững triết lý “micro but extensible”: framework cốt lọn nhẹ (40KB), mọi thứ mở rộng qua extension. Partitioned cookies và key rotation nâng cao bảo mật, resource limits kiểm soát tốt hơn, async streaming cải thiện. Đối với dự án web Python mới — blog, dashboard, REST API, prototype — Flask 3.1 là điểm xuất phát tốt nhất: cài đặt một lệnh, code 10 dòng, chạy ngay. Tài liệu chính thức tại flask.palletsprojects.com, mã nguồn trên GitHub.
Nguồn tham khảo: Flask Changelog, Flask Official Site, Flask GitHub, MDN — Partitioned Cookies.
