2012-08-12 33 views
6

Tôi thấy khá khó hiểu chính xác những gì khác biệt khi sử dụng Flask's before_request() và/hoặc after_request() so với sử dụng phần mềm trung gian WSGI.bình: wsgi-middleware vs before_ và after_request()

Nói rằng tôi muốn làm điều gì đó rất ngớ ngẩn như thế này:

  • Mỗi yêu cầu thân nên được quét từ "thịt xông khói" và được thay thế bằng "trứng".
  • Bây giờ yêu cầu lượt truy cập bình xem (theo url-mapping), xem chức năng tạo ra các phản ứng
  • Mỗi phản ứng thân nên được quét để kiểm tra "trứng" và thay thế bằng "thịt xông khói"

Would Tôi sử dụng một phần mềm trung gian WSGI hoặc các chức năng Flask? Đến từ django với một bộ phần mềm trung gian rất mạnh mẽ, sự khác biệt không rõ ràng với tôi.

Xin cảm ơn trước. berni

Trả lời

8

Thực ra, bạn có cùng lựa chọn chính xác ở Django. Django, trong một số phần, được xây dựng trên WSGI, vì vậy bạn về mặt lý thuyết có thể viết phần mềm trung gian WSGI hoặc phần mềm trung gian Django ở Django. Lý do bạn không có nhầm lẫn là vì cộng đồng Django thường điều khiển các nhà phát triển khỏi phần mềm trung gian của WSGI. Một lý do là do thực tế là Django được thiết kế để hoạt động bình đẳng trên mod_python và WSGI. Bằng cách sử dụng phần mềm trung gian Django, phần mềm trung gian của bạn hoạt động trên cả hai hệ thống (xem this post by James Bennett).

Một lợi thế mà việc tạo một phần mềm trung gian WSGI là nó có thể được sử dụng trong nhiều khung công tác. Ví dụ, Beaker là một phiên và bộ đệm đệm của phần mềm trung gian WSGI có thể được sử dụng trong bất kỳ khung công tác WSGI nào. Nếu nó được viết cụ thể trong Flask, thì các nhà phát triển Pyramid không thể sử dụng nó. Người duy trì của thư viện đặc biệt đảm bảo rằng thư viện có thể làm việc trong nhiều khung công tác, do đó, ông đã viết nó như một thư viện WSGI.

Về cơ bản, đây là cách tôi sẽ đưa ra quyết định của tôi:

  1. Nếu bạn chỉ viết một middleware mà làm điều gì đó cụ thể để ứng dụng của bạn, sử dụng middleware của khuôn khổ của bạn.
  2. Nếu bạn nghĩ phần mềm trung gian của mình hữu ích trong một vài ứng dụng và có thể hữu ích cho người khác, vẫn sử dụng phần mềm trung gian của khung công tác của bạn (những gì Flask thực sự thường gọi là "tiện ích mở rộng"). Xem Flask-SQLAlchemy làm ví dụ.
  3. Nếu mọi người đang thực sự quan tâm đến phần mềm trung gian của bạn và sẵn sàng trợ giúp, hãy nghĩ đến việc chuyển đổi nó sang thư viện phần mềm trung gian WSGI để nó có thể được sử dụng trong các khung công tác khác.
+0

câu trả lời hay - cảm ơn! – bmaeser

Các vấn đề liên quan