2014-04-25 11 views
10

Tôi đang gặp khó khăn với một số lựa chọn kiến ​​trúc cho ứng dụng internet có thể mở rộng.Các khuôn khổ web/tiện ích bổ sung cao cấp cho Twisted/Cyclone/Tornado (đăng nhập web/người dùng/quản trị viên)?

tôi đã chọn căn dự án của tôi trên Twisted tăng cường với khuôn khổ Cyclone để cung cấp nhiều Tornado convenances (WebSockets, auth-trang trí, an toàn-cookie, vv)

Sử dụng một lõi Twisted đã làm việc thật đẹp đối với tôi . Tôi có rất nhiều giao thức IP và giao diện phần cứng, tất cả đều có hỗ trợ thư viện tuyệt vời bên trong xoắn (và thêm các giao thức và giao diện mới cho ứng dụng của tôi là các góc có khả năng nhất tôi sẽ có phạm vi dự án), tất cả đều cần Twisted CPU rất thấp và cung cấp số lượng kết nối rất cao.

Sự cố của tôi là với chức năng webapp thứ hai.

Tôi đã kéo Cyclone nghĩ rằng với các tính năng đó (OpenID, oauth, user-auth decorators và secure-cookies) sẽ không mất nhiều thời gian để thực hiện chức năng người dùng/phiên/quản trị trong webapp của tôi. Sau khi 500 + dòng trừu tượng cơ sở dữ liệu của tôi (qua txmongo) và chỉ đăng nhập người dùng xây dựng nó trở nên rõ ràng tôi đều:

  1. Không hiểu thế nào Cyclone chút/Tornado mang lại cho người sử dụng/phiên/không gian quản trị và
  2. không hiểu số lượng mã cần thiết để lấp đầy khoảng trống nếu bạn cố gắng xây dựng một đa người dùng auth webapp

một người bạn đã chỉ cho tôi tại Flask, ban đầu tôi nghĩ là hoàn toàn dư thừa, cho đến khi tôi tìm thấy flask plugins. Sự kết hợp của Flask-LoginFlask-Admin sẽ hoàn toàn đáp ứng nhu cầu của người dùng, phiên và quản trị viên người dùng của tôi, phủ nhận tôi viết những gì tôi đoán là khoảng 2k dòng mã. Thật không may, các plugin bình là tất cả các rife với mã chặn và các cuộc gọi để chặn các thư viện. Tôi không thấy chúng tương thích với dự án của tôi ngay cả khi WSGIcontainers được sử dụng cho rằng chức năng người dùng/phiên xảy ra với mọi lần tải trang (ngoài ra tôi không thấy bất kỳ đoạn cắt ngắn nào cho phép tôi chuyển chúng sang thế giới không đồng bộ hóa làm việc tương đương với viết lại chúng)

câu hỏi của tôi là:

trong khoảng thời gian trăn async (... hy vọng trong không gian xoắn, do nhu cầu giao thức của tôi), là có bất kỳ plugin hoặc khung thay thế mà cung cấp chức năng người dùng sẵn sàng để truy cập/đăng nhập/quản trị tương tự như những gì có trong Flask-Login và Flask-Admin?

P.S. Tôi đã xem Klein là phiên bản Flask rõ ràng của Flask, nhưng nó dường như không có hệ sinh thái plugin và tôi không tìm thấy bất kỳ người dùng/phiên/quản trị viên mạnh nào ở đó.

P.P.S. Vào thời điểm tôi viết câu hỏi này, tôi đã viết hệ thống phiên đăng nhập của người dùng (crappy) của riêng tôi. Vì vậy, những gì tôi thực sự sau là khả năng "Quản trị" (chức năng CRUD tự động trên hồ sơ kiểu người dùng, bao gồm cả giao diện người dùng web, tất cả được thiết kế theo cách Xoắn/không đồng bộ). Tôi hỏi về người dùng/đăng nhập trong câu hỏi trong trường hợp nó bật ra có một giải pháp đã được tích phân (như bình-đăng nhập và bình-admin) trong trường hợp này tôi vui vẻ thả mã của tôi và chuyển sang đó.

+3

Có một vài người ở đó đã thử thêm hỗ trợ phiên vào Tornado, mặc dù tất cả dường như không còn được duy trì: https://github.com/milancermak/tornado, https://github.com/diogobaeder/pycket. Tôi đã không sử dụng hoặc vì vậy tôi không chắc chắn về chất lượng của họ. Bạn có thể mượn một số mã, ít nhất. – dano

+0

flask-socketio có hỗ trợ không đồng bộ. xem xét điều này: http://flask-socketio.readthedocs.org/en/latest/ – chfw

+0

Bạn không thực sự cần quản trị viên hoàn toàn không đồng bộ đúng không? Trong trường hợp đó, bạn có thể sử dụng Flask-Admin trong một WSGIResource bị xoắn. Đối với các công cụ phiên, tôi đến đây tìm kiếm câu trả lời tương tự :) – dpn

Trả lời

2

Bạn có thực sự cần mọi thứ không đồng bộ không? Hãy xem xét WebSockets không đồng bộ nhưng đồng bộ hóa trang render. Nếu bạn phải, thêm một proxy hạ lưu async hoặc cân bằng tải mà hầu như sẽ loại bỏ chi phí IO của máy chủ ứng dụng.

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