Các nhà phát triển Python cần những gì để giúp cuộc sống dễ dàng hơn? Câu trả lời là các framework. Bằng cách tự động hóa việc thực hiện các tác vụ dư thừa, các framework cắt ngắn thời gian phát triển và cho phép các nhà phát triển tập trung nhiều vào logic ứng dụng hơn các yếu tố thông thường. 

Bởi vì đây là một trong những ngôn ngữ lập trình hàng đầu nên không thiếu framework dành cho Python. Các framework khác nhau có những lợi ích và những vấn đề riêng của chúng. Vì vậy việc lựa chọn cần phải dựa vào cơ sở các yêu cầu của project và ưu tiên của nhà phát triển. 

Có ba framework Python chính là full-stack, microframework và asynchronous. Trước khi chuyển sang thảo luận về các framework tốt nhất của Python sẽ ra mắt vào năm 2019, đầu tiên hãy tìm hiểu sơ lược về các loại framework khác nhau của Python nhé. 

Các loại framework của Python 

A. Full-stack framework 

Các framework này là giải pháp cho tất cả các yêu cầu của nhà phát triển. Các trình tạo biểu mẫu, xác thực biểu mẫu và các template layout thường có sẵn với một full-stack framework điển hình. 

B. Microframework 

Đây là những framework nhẹ không cung cấp các chức năng và tính năng bổ sung như database abstraction layer, xác thực biểu mẫu, các công cụ và các thư viện cụ thể. Các nhà phát triển sử dụng microframework cần thêm rất nhiều code và những yêu cầu bôbổ sung thủ công. 

C. Asynchronous framework 

Gần đây đã trở nên phổ biến hơn, bất kỳ một asynchronous framework nào cũng đều là một microframework cho phép xử lý một tập hợp lớn các kết nối đồng thời. Thông thường, một asynchronous franework được xây dựng cho Python sử dụng thư viện asyncio của ngôn ngữ lập trình. 

Python ứng dụng và phân tích dữ liệu năm 2019 

Các framework tốt nhất cho năm 2019  

1. AIOHTTP

Loại: Asynchronous framework 

AIOHTTP là một framework Python phụ thuộc rất nhiều vào các tính năng của Python 3.5+ như async và awaits. Framework Python dùng thư viện asyncio của Python và là một framework asynchronous. 

Bên cạnh việc là một framework web máy chủ, AIOHTTP còn có thẻ là một framework máy khách. Nó cung cấp một đối tượng yêu cầu và một bộ định tuyến cho phép chuyển hướng truy vấn đến các chức năng được phát triển để xử lý tương tự.

Các điểm nổi bật chính: 

Cho phép xây dựng amework cắt ngắn thời gian phát triển và cho phép các nhà phát triển tập trung nhiều vào logic ứng dụng hơn các yếu tố thông thường. 

Bởi vì đây là một trong những ngôn ngữ lập trình hàng đầu nên không thiếu framework dành cho Python. Các framework khác nhau có những lợi ích và những vấn đề riêng của chúng. Vì vậy việc lựa chọn cần phải dựa vào cơ sở các yêu cầu của project và ưu tiên của nhà phát triển. 

Có ba framework Python chính là full-stack, microframework và asynchronous. Trước khi chuyển sang thảo luận về các framework tốt nhất của Python sẽ ra mắt vào năm 2019, đầu tiên hãy tìm hiểu sơ lược về các loại framework khác nhau của Python nhé. 

2. Bottle 

Loại: Microframework

Bottle tạo một tệp nguồn đơn cho mọi ứng dụng được phát triển bằng cách sử dụng nó. Microframework cho Python ban đầu được phát triển để xây dựng API. Khác với Python Standard Library, Bottle không có các phụ thuộc cần thiết để tạo nên các ứng dụng web nhỏ . 

Một trong những ưu điểm quan trọng của việc sử dụng Bottle là nó cho phép các nhà phát triển làm việc gần hơn với hardware. Bên cạnh việc xây dựng các ứng dụng cá nhân đơn giản, Botte còn phù hợp để học cách tổ chức các web framework và web prototyping. 

Các điểm nổi bật chính: 

  • Hỗ trợ điều hợp cho các động cơ mẫu của bên thứ 3 và các máy chủ WSGI/HTTP 
  • Cho phép truy cập từ các cookies, data, tệp tải lên, và các siêu dữ liệu liên quan đến HTTP
  • Máy chủ HTTP tích hợp 
  • Hỗ trợ đầu vào cho các cơ sở dữ liệu khác nhau
  • Cung cấp các  dây truyền gửi yêu cầu có hỗ trợ tham số URL

3. CherryPy

Loại: Microframework

CherryPy là một framework Python mã nguồn mở phổ biến và định hướng đối tượng cho phép tiếp cận tối giản. Micro-framework là một trong những framework Python lâu đời nhất ra mắt vào tháng 6 năm 2002. 

Bất cứ ứng dụng web nào được CherryPy cung cấp cũng là đều là một ứng dụng Python độc lạo với máy chủ web đa luồng được nhúng riêng và chạy được trên bất cứ hệ điều hành nào có hỗ trợ Python. Một ứng dụng như thế có thể được hiển thị ở bất cứ đâu mà một ứng dụng Python thông thường có thể chạy. 

Người ta không cần một máy chủ Apache để chạy các ứng dụng được phát triển bằng CherryPy. Micro-framework cho phép các nhà phát triển sử dụng bất kỳ loại công nghệ nào để truy cập dữ liệu, tạo mẫu, vân vân...

Các điểm nổi bật chính: 

  • Một số công cụ vượt trội cho việc xác thực, lưu trữ, mã hóa, nội dung tĩnh và nhiều hơn nữa
  • Một hệ thống plugin tích hợp linh hoạt
  • Máy chủ web được xử lý theo luồng WSGI tuân thủ HTTP / 1.1
  • Hỗ trợ sẵn có cho bảo hiểm, hồ sơ và thử nghiệm
  • Chạy nhiều máy chủ HTTP cùng một lúc đơn giản
  • Hệ thống cấu hình mạnh mẽ
  • Chạy trên Android

 

4. CubicWeb

Loại: Full-stack framework  

Được phát triển và quản lý bởi Logilab, CubicWeb là một web framework mã nguồn mở sử dụng miễn phí trên nền Python. Dựa trên mô hình dữ liệu, CubicWeb yêu cầu phải cùng định nghĩa để phát triển ứng dụng chức năng. 

Không giống như các framweork phổ biến khác của Python dùng các view và mô hình riêng, CubicWeb sử dụng các hình lập phương. Nhiều hình lập phương được nối với nhau để tạo một liên kết với trợ giúp của cơ sở dữ liệu, máy chủ web và một số tệp cấu hình. 

Các điểm nổi bật chính: 

  • Hỗ trợ OWL (Web Ontology language) và RDF (Resource Description Framework)
  • Các thành phần có thể sử dụng lại 
  • Bảo mật workflow 
  • Đơn giản hóa các truy vấn liên quan đến dữ liệu với nhúng RQL (Relational Query Language) 
  • Hỗ trợ nhiều cơ sở dữ liệu 

5. Dash

Loại: Microframework 

Dash là một framework mã nguồn mở trên nền Python dùng để xây dựng các ứng dụng phân tích web. Đây là framework lý tưởng cho các nhà khoa học dữ liệu không có nhiều kinh nghiệm trong vấn đề cơ chế phát triển web. 

Các ứng dụng được thiết kế từ DasDash là các máy chủ web chạy Flask và giao tiếp với các gói JSON thông qua các yêu cầu HTTP. Phần frontend của nó trả lại các thành phần sử dụng Reactjs. Các plugin Flask có thể được sử dụng để mở rộng khả năng của Dash.

Vì các ứng dụng Dash được hiển thị trong trình duyệt web và có thể được triển khai cho các máy chủ nên chúng sẵn sàng cho nhiều nền tảng và di động. Các nhà phát triển Dash được cung cấp quyền truy cập Flask cũng như tất cả các thuộc tính cấu hình của nó.

Các điểm nổi bật chính: 

  • Ứng dụng Dash yêu cầu rất ít mã soạn sẵn để khởi động
  • Xử lý lỗi (Dash Deployment)
  • Mức độ tùy biến cao
  • Tích hợp LDAP (Dash Deployment Server)
  • Hỗ trợ plugin
  • Giao diện đơn giản cho các điều khiển UI, bao gồm cả thả xuống, biểu đồ và thanh trượt
  • Định tuyến URL (Dash Deployment Server)

 

6. Django 

 Loại: Full-stack framework 

Django là một trong những framework phát triển web được yêu thích nhất cho việc phát triển các ứng dụng Python. Thực tế,  nó đã không còn là một trong top 10 framework phát triển web năm 2018 nữa. Framework Django cho phép nguyên lý DRY (Don't Repeat Yourself) 

Không như các framework khácc, framework full-stack sử dụng miễn phí và mã nguồn mở của Python bao gồm một số lượng lớn các tính năng tích hợp thay vì cung cấp chúng dưới dạng các thư viện riêng lẻ. Django sử dụng ORM của nó để ánh xạ các đối tượng vào các bảng cơ sở dữ liệu. Điều này cho phép code hoạt động trên các cơ sở dữ liệu khác nhau cũng như giúp việc di chuyển từ cơ sở dữ liệu này sang cơ sở dữ liệu khác dễ dàng hơn. Mặc dù Django có hỗ trợ cho MySQL, PostgreSQL, SQLite và Oracle Database, nhưng nó vẫn có thể hỗ trợ các cơ sở dữ liệu khác thông qua trình điều khiển của bên thứ ba.

Các điểm nổi bật chính: 

  • Nhiều thư viện đã sẵn sàng sử dụng
  • Hỗ trợ xác thực
  • Di chuyển bản đồ cơ sở dữ liệu
  • Ánh xạ quan hệ đối tượng (ORM)
  • Hỗ trợ cho máy chủ web
  • Công cụ mẫu
  • Định tuyến URL

 

7. Falcon

Loại: Microframework 

Nhằm mục đích xây dựng API web nhanh chóng, Falcon là một framework Python khác được sử dụng rộng rãi. Không giống như các framework Python khác yêu cầu tải nhiều dependency để xây dựng API HTTP, Falcon cho phép các nhà phát triển xây dựng thiết kế gọn gàng hơn cho dùng các cấu trúc HTTP và REST.

Theo thử nghiệm điểm chuẩn được thực hiện bởi Sanic, Falcon có thể xử lý hầu hết các yêu cầu có cùng phần cứng so với tất cả các đối thủ cùng thời. Framework Python có 100% code trung bình. Falcon được người dùng lớn như LinkedIn, OpenStack và RackSpace sử dụng. 

Các điểm nổi bật chính:

  • Cơ sở mã mở rộng, được tối ưu hóa cao
  • Yêu cầu xử lý DRY thông qua các thành phần trung gian và hook
  • Dễ dàng truy cập thông qua các class yêu cầu và phản hồi
  • Tăng tốc độ thêm với sự hỗ trợ của Cython
  • Phản hồi lỗi HTTP đặc ngữ
  • Các class tài nguyên lấy cảm hứng từ REST và các mẫu URI cung cấp định tuyến trực quan
  • Kiểm tra đơn vị thông qua trình trợ giúp và giả lập WSGI
  • Xử lý ngoại lệ trả trước

 

8. Flask 

Loại: Microframework 

 Có sẵn theo giấy phép BSD, Flask là framework Python phổ biến khác. Lấy cảm hứng từ framework Sinatra Ruby, microframework yêu cầu mẫu Jinja2 và bộ công cụ Werkzeug WSGI. Nhờ thiết kế gọn nhẹ và mô-đun, Flask có thể dễ dàng thích nghi.

Flask cho phép các nhà phát triển xây dựng một nền tảng ứng dụng web vững chắc từ đó có thể sử dụng bất kỳ loại tiện ích mở rộng nào cần thiết. Micro-framework tương thích với Google App Engine.    

Các điểm nổi bật chính:

  • Trình gỡ lỗi nhanh tích hợp
  • Xử lý yêu cầu HTTP
  • Máy chủ phát triển sẵn có
  • Tạo khuôn mẫu Jinja2
  • Gửi yêu cầu RESTful
  • Hỗ trợ cắm bất kỳ ORM nào\Hỗ trợ cookie an toàn để thiết lập các phiên về phía khách hàng
  • Dựa trên Unicode
  • Hỗ trợ kiểm tra đơn vị
  • Tuân thủ WSGI 1.0

 

9. Giotto

Loại: Full-stack framework

Giotto là một framework ứng dụng của Python dựa dựa trên pattern Model View Controller. Để cho phép các nhà thiết kế web, nhà phát triển web và quản trị viên hệ thống hoạt động độc lập, Giotto tách các thành phần Mô hình, Chế độ xem và Trình điều khiển theo thứ tự.

Giotto bao gồm các mô-đun bộ điều khiển cho phép người dùng tạo ứng dụng trên đầu trang web, IRC (Internet Repay Chat) và dòng lệnh. 

Các điểm nổi bật chính:

  • Định tuyến URL tự động
  • Duy trì cơ sở dữ liệu với SQLAlchemy
  • Cực kỳ ngắn gọn code
  • Các pattern CRUD chức năng
  • Mô hình và view chung
  • Bộ nhớ cache sẵn có hỗ trợ Memcache và Redis (API khả dụng để mở rộng hỗ trợ cho các công cụ khác)
  • Jinja2 cho các mẫu HTML (API có sẵn để hỗ trợ các công cụ mẫu khác)
  • Nhiều bộ điều khiển cắm
    Giao diện RESTful với trình duyệt bình thường POST của trang CRUD

 

 10. Growler

Loại: Asynchronous framework 

Lấy cảm hứng từ NodeJS và các framework Express / Connect, Growler là một micro web framework được viết trên đầu thư viện asyncio của Python.

Không giống như các khung Python thông thường khác, các yêu cầu trong Growler không được xử lý trong framework nhưng bằng cách chuyển qua công nghệ phần mềm trung gian.

Là lựa chọn hàng đầu trong số các framework Python để thực hiện dễ dàng và nhanh chóng các ứng dụng phức tạp, Growler ban đầu được tác giả phát triển để học cách sử dụng thư viện asyncio ở mức thấp nhất.

Các điểm nổi bật chính:

  • Dễ dàng xem program flow do thiếu các cuộc gọi lại cần thiết và các khối thử / ngoại trừ thích hợp
  • Hỗ trợ vô số gói nguồn mở
  • Sử dụng trang trí để viết mã sạch, có thể tái sử dụng
  • Mô-đun Ziapp cho phép nén toàn bộ ứng dụng vào một tệp thực thi duy nhất

 

Hug

Loại: Microframework

 

Hug được thiết kế để cho phép các nhà phát triển Python phát triển API một lần sau đó sử dụng nó ở bất cứ đâu họ muốn. Framework Python đơn giản hóa việc phát triển API bằng cách cung cấp nhiều giao diện. Nó được gắn nhãn là framework web nhanh nhất cho Python 3.

Cho dù bạn đang thực hiện phát triển cục bộ, qua HTTP hoặc thông qua CLI, Hug cho phép hoàn thành phát triển ứng dụng một cách nhanh chóng và dễ dàng. Để đưa hiệu suất lên cấp độ tiếp theo, Hug chỉ tiêu thụ tài nguyên khi được yêu cầu và sử dụng Cython để biên dịch.

Các điểm nổi bật chính: 

  • Xác nhận hỗ trợ chú thích
  • Theo viết một lần, sử dụng bất cứ quan điểm nào
  • Quản lý phiên bản sẵn có
  • Hỗ trợ tài liệu tự động

 

11. MorePath

Loại: Microframework 

Được đặt là "Framework web Python siêu mạnh mẽ", More MorePath đảm bảo thiết lập tối thiểu. Nó được thiết kế đặc biệt để nhận hầu hết các trường hợp sử dụng thông thường và chạy ASAP, bao gồm các cấu trúc dữ liệu Python phổ biến được tạo ra trong RESTful Web Services.

Microframework, MorePath, là một framework web điều khiển mô hình rất linh hoạt. Một tính năng độc đáo có sẵn cho framework Python là nó tự động biến các đường dẫn được xác định trong khung thành các liên kết trong việc tạo các ứng dụng có URL gọn gàng nhất. 

Các điểm nổi bật chính: 

  • Tất cả các view là chung. Tái sử dụng view trong view
  • Đi kèm với tất cả các công cụ cần thiết để phát triển dịch vụ web RESTful
  • Tạo giao diện người dùng chung đơn giản như phân lớp
  • Mở rộng với cơ chế mở rộng và ghi đè đơn giản, mạch lạc và phổ quát
  • Các quyền linh hoạt, đơn giản và mạnh mẽ

 

12. Pyramid

Loại: Full-stack framework

 Pyramid là một framework Python hàng đầu khác. Mục đích chính của framework phát triển web nền Python mã nguồn mở này là đạt được nhiều nhất so với sự phức tạp tối giản. 

Khía cạnh đáng mong đợi nhất của Pyramid là khả năng hoạt động tốt như nhau với các ứng dụng quy mô nhỏ cũng như các ứng dụng full-scale. Hơn nữa, có vô số tài nguyên có sẵn để mở rộng khả năng theo lần gọi yêu cầu.

Các điểm nổi bật chính:

  • Khả năng xác thực và ủy quyền linh hoạt
  • Chức năng trang trí
  • Vị từ
  • Trình kết xuất
  • Các ứng dụng một tập tin
  • Thông số kỹ thuật và khuôn mẫu
  • Tạo URL

 

13. Sanic 

Loại: Asynchronous framework

Được xây dựng trên cơ sở của uvloop, Sanic là một framework Python đơn giản mã nguồn mở được phát triển đặc biệt để cung cấp các phản hồi HTTP nhanh thông qua xử lý yêu cầu không đồng bộ. Do đó, nó là một asynchronous framework cho Python.

Sanic hỗ trợ các trình xử lý yêu cầu không đồng bộ, làm cho nó tương thích với các hàm async / await của Python 3.5. Dẫn đến việc tăng cường tốc độ cũng như cung cấp khả năng không chặn.

Trong quá trình kiểm tra điểm chuẩn với một quy trình và 100 kết nối, Sanic có thể xử lý tới 33.342 yêu cầu trong một giây.

Các điểm nổi bật: 

  • Có thể đọc và viết cookies
  • Cho phép các loại logging khác nhau, chẳng hạn như nhật ký truy cập và nhật ký lỗi
  • View dựa trên nền class
  • Xử lý dễ dàng để áp dụng hỗ trợ trang trí
  • Hỗ trợ plugin
  • Hỗ trợ kế hoạch chi tiết cho định tuyến phụ trong một ứng dụng
  • Đối tượng cấu hình có thể được sửa đổi bằng cách sử dụng ký hiệu chấm hoặc giống như một từ điển

 

14. Tornado

Loại: Asynchronous framework 

Tornado là một framework Python mã nguồn mở và một thư viện mạng lưới asynchronous. 

Ngoài việc giải quyết vấn đề C10k (có nghĩa là xử lý các kết nối 10k tại bất kỳ thời điểm nào), asynchronous framework sử dụng I / O mạng không chặn.

Framework Python ban đầu được phát triển cho một công ty có tên FriendFeed, được Facebook mua lại vào năm 2009. Tornado là một công cụ lý tưởng để xây dựng các ứng dụng yêu cầu hiệu suất cao và có hàng nghìn người dùng đồng thời.

Các điểm nổi bật: 

  • Cho phép thực hiện các chương trình xác thực và ủy quyền của bên thứ 3
  • Cung cấp đầu ra chất lượng cao
  • Các dịch vụ thời gian thực
  • Hỗ trợ dịch thuật và định vị hóa
  • Hỗ trợ xác thực người dùng
  • Tạo mẫu web

 

15. TurboGears

Loại: Full-stack

TurboGears là một framework full-stack ứng dụng web đầy đủ dựa trên dữ liệu, mã nguồn mở cho Python. Framework cho phép các nhà phát triển nhanh chóng phát triển các ứng dụng web dựa trên dữ liệu mở rộng.

Ngoài việc hỗ trợ ORM linh hoạt và mạnh mẽ, TurboGears còn đi kèm với việc tạo khuôn mẫu dễ hiểu. Full-stack framework sử dụng các thành phần như Genshi, Repoze, SQLAlchemy và WebOb để dễ dàng và nhanh chóng phát triển các ứng dụng yêu cầu kết nối cơ sở dữ liệu.

Các điểm nổi bật:

  • Tất cả các tính năng được thực hiện như chức năng trang trí
  • Các công cụ dòng lệnh có sẵn
  • Tích hợp thư viện JavaScript MochiKit
  • Hỗ trợ đa cơ sở dữ liệu
  • Kiến trúc kiểu MVC
  • Mẫu PasteScript
  • ToscaWidgets để đơn giản hóa việc phối hợp thiết kế lối vào và triển khai máy chủ
  • Sử dụng Pylons như một máy chủ web
  • Hỗ trợ xác thực với FormEncode

 

16. Web2Py

Loại: Full-stack framework 

Web2Py có thể là câu trả lời đối với các nhà phát triển Python đang tìm kiếm full-stack có thể mở rộng. Framework Python nguồn mở đi kèm với IDE dựa trên web của riêng nó, bao gồm trình soạn thảo code, trình gỡ lỗi và triển khai bằng một cú nhấp chuột.

Mặc dù Web2Py cho phép người dùng tạo nội dung web động trong Python, nhưng nó không cung cấp hỗ trợ cho Python 3. Hệ thống bán vé là một trong những tính năng quan trọng nhất của khung Python. Hệ thống phát hành một vé cho người dùng bất cứ khi nào xảy ra lỗi.

Các điểm nổi bật: 

  • Khả năng chạy trên bất kỳ nền tảng lưu trữ web nào cung cấp hỗ trợ cho Python hoặc Java và Python
  • Khả năng tương thích ngược
  • Bảo mật dữ liệu tích hợp để ngăn ngừa một số lỗ hổng phổ biến, bao gồm tập lệnh chéo trang, lỗi tiêm chích và thực thi tệp độc hại
  • Không có yêu cầu cài đặt và cấu hình
  • Theo mô hình MVC
  • Cung cấp hỗ trợ cho quốc tế hóa
  • Khả năng đọc của nhiều giao thức
  • Kiểm soát truy cập dựa trên vai trò

 

Kết luận

Để đánh giá cao tất cả (hoặc hầu hết) các framework Python đã đề cập ở trên, bạn cần có ít nhất trình độ trung bình trong ngôn ngữ lập trình được giải thích ở cấp độ cao. Nếu không, thì đây là 10 cuốn sách Python tốt nhất để đẩy mạnh trò chơi của bạn.