2011-01-30 20 views
9

Vì vậy, tôi đã lập trình ứng dụng xoắn này một vài tháng trước, mà bây giờ tôi muốn mở rộng với một giao diện người dùng dựa trên web để cấu hình.Cách nào để thực hiện với tính năng lập trình web và xoắn?

Trang web Twisted đề xuất Nevow, nhưng tôi không thực sự chắc chắn nếu đây là một lựa chọn tốt. Trang web của họ đã ngừng hoạt động trong một thời gian và trang khởi chạy của họ không thấy bất kỳ cập nhật nào trong nửa năm. Dự án này đã chết chưa? Ngoài ra, tôi đã thấy các cuộc thảo luận về việc di chuyển các bộ phận của Nevow thành twisted.web trên danh sách thư điện tử trên web. Vì vậy, nó vẫn được khuyến khích cho những phát triển mới?

Một ý tưởng khác là sử dụng Django. Tôi sẽ cần xác thực người dùng và quyền dù sao trong giao diện cấu hình, và tôi khá quen thuộc với nó. (Tôi chưa bao giờ làm việc với Nevow hoặc twisted.web) Nhưng có vẻ như khá khó khăn để giao tiếp cả hai thế giới, tất cả những gì tôi có thể tìm thấy là các ví dụ về chạy Django với WSGI trong Twisted.

Có khả năng nào khác để có giao diện người dùng tìm kiếm mượt mà trên đầu xoắn không?

+0

Bạn đã điều tra CherryPy chưa? –

+0

Công cụ [BuildBot] (http://trac.buildbot.net/wiki/ScreenShots) được viết bằng Twisted và có một số kết quả đầu ra trang web tốt, nó có thể là một nơi tốt để học hỏi. – sarnold

Trả lời

6

Nevow vẫn là lựa chọn tốt nếu bạn muốn hỗ trợ cho Trì hoãn trong hệ thống templating bạn sử dụng (nó không phải là chết). Nó cũng có một vài ưu điểm so với Web thuần tuý khi nói đến việc gửi URL phức tạp. Tuy nhiên, nó là về cơ bản chỉ là một hệ thống templating. Twisted Web là máy chủ web thực sự. Vì vậy, một trong hai cách, bạn sẽ sử dụng Twisted Web. Trong thực tế, ngay cả khi bạn sử dụng Django trong vùng chứa WSGI của Twisted Web, bạn vẫn sẽ sử dụng Twisted Web. Vì vậy, việc học những điều về Twisted Web sẽ không làm bạn tổn thương.

Nếu bạn định tạo ra bất kỳ lượng HTML nào, thì bạn rất muốn sử dụng thư viện tạo mẫu HTML. Đến thời điểm này không ai nên xây dựng HTML bằng cách sử dụng các hoạt động chuỗi nguyên thủy. Vì vậy, nếu bạn muốn sử dụng một trong các thư viện templating HTML khác của Python - Cheetah, Quixote, vv - thay vì Nevow, điều đó thật tuyệt! Bạn sẽ chỉ sử dụng thư viện templating để có được một chuỗi để viết ra để đáp ứng với một yêu cầu HTTP. Twisted Web không quan tâm đến chuỗi từ đâu.

Và nếu bạn muốn làm điều gì đó với Django (hoặc một hệ thống dựa trên WSGI), thì bạn chắc chắn có thể triển khai điều này trong quá trình Xoắn bằng cách sử dụng hỗ trợ WSGI của Twisted Web. Và bạn vẫn có thể tương tác giữa các ứng dụng WSGI và phần còn lại của mã Twisted của bạn, miễn là bạn thực hiện một chút cẩn thận - các ứng dụng WSGI chạy trong một nhóm luồng và các API Xoắn không an toàn, bạn phải gọi chúng bằng reactor.callFromThread hoặc một trong số ít các API tương tự (cụ thể, blockingCallFromThread đôi khi là công cụ cấp cao hữu ích để sử dụng).

9

Trước tiên, hãy để tôi giải quyết nhận thức rằng Nevow đã chết. Dự án bệ phóng có chứa mã cho Nevow (và phần còn lại của các dự án Divmod) là divmod.org on launchpad. Một lỗi phần cứng đã ảnh hưởng xấu đến sự hiện diện công khai của dự án, nhưng nó vẫn còn đó, và những thứ khác (như wiki và vé) đang trong quá trình phục hồi. Hiện tại không có nhiều công việc bảo trì đang hoạt động, nhưng chủ yếu là do nó đủ tốt cho hầu hết người dùng; có rất nhiều người phụ thuộc vào Nevow và sẽ rất khó chịu nếu nó ngừng hoạt động. Những người đó có những kỹ năng và kinh nghiệm cần thiết để tiếp tục duy trì nó. Vì vậy, trong khi nó không được quảng bá ngay bây giờ, tôi nghĩ rằng nó không chắc rằng nó sẽ biến mất.

Hy vọng dài hạn của tôi cho Nevow sẽ như sau. (Tôi muốn nói "kế hoạch", nhưng vì tôi đã không tham gia tích cực vào việc bảo trì của nó gần đây, điều này thực sự là đối với những người đang có.) Đầu tiên, tôi muốn trích xuất các cơ sở templating của nó và di chuyển chúng thành xoắn. web. API sạch, không được sử dụng cho Nevow chủ yếu được bao gồm bởi nevow.page.Elementloaders khác nhau.Bản thân Twisted muốn tạo HTML ở một vài nơi và các cơ sở này có thể hữu ích. Sau đó, chúng ta nên ném ra các "appserver" và các phần mô hình tài nguyên của Nevow. Đó là phần lớn chỉ là một bộ sưu tập ngẫu nhiên của các sửa lỗi hoặc thay đổi cho twisted.web, hầu hết trong số đó đã có mặt trong một dạng nào đó trong xoắn.web2 và do đó hoặc sẽ được cuộn lại vào trong twisted.web dù sao, hoặc đã được áp dụng ở đó. Cuối cùng là câu hỏi của Athena. Trong khi giao tiếp hai chiều là một trong những điểm mạnh của Twisted, Athena chính nó là một codebase JavaScript khổng lồ, sắc màu rực rỡ và có lẽ nên vẫn là dự án riêng của mình.

Thứ ba, đối với câu hỏi chính, được cung cấp thông tin này, bạn nên làm gì bây giờ?

Nói chung, tôi muốn nói "sử dụng nevow". Dự án có một số mụn cóc, nó cần thêm tài liệu và API của nó cần phải được cắt để loại bỏ một số công cụ cũ và bị hỏng, nhưng nó vẫn còn khá hữu ích và rất nhiều sống. Để bù đắp cho tài liệu hơi thưa thớt, bạn có thể tham gia các kênh #divmod hoặc #twisted.web trên Freenode để được trợ giúp. Nếu bạn giúp đỡ bằng cách đóng góp các bản vá lỗi nơi bạn có thể, bạn sẽ thấy rằng bạn sẽ nhận được rất nhiều sự giúp đỡ nhiệt tình ở đó. Khi bạn bỏ qua các phần không được dùng nữa, Nevow có một API thân thiện nhỏ, sane và xoắn. Hậu quả của kế hoạch cho sự tiến hóa của Nevow mà tôi vạch ra ở trên thực sự là rất nhỏ. Nếu điều đó thậm chí xảy ra, nghĩa là đối với bạn, trong vòng 1-5 năm, khi bạn nâng cấp lên phiên bản mới của Twisted, bạn sẽ nhận được một số cảnh báo không dùng nữa, thay đổi một số dòng import trong mã của bạn từ from nevow.page import ...; from nevow.loaders import ... cho một số điều mới giả định như from twisted.web.page.element import ...; from twisted.web.page.templates import ... hoặc somesuch. Hầu hết các API qua điểm đó nên vẫn giữ nguyên, và chắc chắn các khái niệm cấp cao không nên thay đổi nhiều.

Lợi thế chính mà bạn nhận được từ việc sử dụng Nevow là nó không thân thiện với đồng bộ và có thể hiển thị các trang trong chuỗi chính của bạn mà không chặn mọi thứ. Thêm vào đó, bạn có thể nhận được COMET thật dễ dàng miễn phí với Athena.

Bạn cũng có thể sử dụng Django. Đây không phải là khá thân thiện với async nhưng rõ ràng là nó có cơ sở hỗ trợ rộng hơn. Tuy nhiên, "không phải là async thân thiện" không có nghĩa là "khó sử dụng". Bạn có thể chạy nó trong twisted.web qua WSGIResource, and simply use blockingCallFromThread trong ứng dụng Django của bạn để gọi bất kỳ API Twisted nào trả về giá trị hoãn lại, cần đủ mạnh để thực hiện bất kỳ thứ gì bạn muốn. Nếu bạn có một câu hỏi cụ thể hơn về cách khởi tạo tài nguyên web Twisted để kết hợp Twisted Web và Django, bạn có thể nên hỏi nó trong câu hỏi Stack Overflow của chính nó.

+0

Cảm ơn bạn đã cập nhật này !! – mikewaters

1

Tại thời điểm này, Nevow chắc chắn đã chết. Như minh họa về cách nó chết, có một bug that prevents installation of Nevow using pip, đã được cố định trên thân cây trong năm 2009, nhưng nó không có trong bất kỳ bản phát hành vì không có bản phát hành kể từ đó.

twisted.web và đặc biệt là xoắn.web.template bao gồm khá nhiều tất cả những gì hữu ích trong Nevow, và nên được sử dụng cho bất kỳ dự án mới đã được xem xét sử dụng Nevow.

+0

Chúc mừng cho bản cập nhật và tóm tắt –

+0

Vào thời điểm tôi viết bài này, Nevow đã chết, tuy nhiên, từ đó đã có bản phát hành (0.11.1). Điều này chủ yếu là để sửa chữa các vấn đề bao bì cho các dự án hiện tại phụ thuộc vào nó, và tôi vẫn không khuyên bạn sử dụng nó để phát triển mới. –

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