2009-09-11 31 views
14

Tôi cần trợ giúp tìm hiểu lợi thế của việc sử dụng khung công tác là gì. Giả sử tôi muốn phát triển một ứng dụng web trò chuyện đơn giản. Tại sao tôi không thể viết mã python trong khuôn khổ Django mà không bỏ phiếu dài nơi tôi không gửi một phản hồi lại máy chủ cho đến khi ai đó nhập một thông điệp mới. Twisted cung cấp những gì mang lại cho nó một lợi thế cho các ứng dụng thời gian thực như ứng dụng chat?Xoắn (máy chủ asynch) vs Django (hoặc bất kỳ khung công tác nào khác)

Xin lỗi tôi rõ ràng ít nhầm lẫn về sự cần thiết cho một khung công tác không đồng bộ.

Trả lời

16

Máy chủ không đồng bộ hỗ trợ số lượng lớn hơn nhiều kết nối máy khách đồng thời. Các máy chủ thông thường hơn đi ngược lại các giới hạn luồng và quy trình khi phục vụ số lượng lớn các máy khách đồng thời, đặc biệt là các máy chủ có kết nối lâu dài. Máy chủ không đồng bộ cũng có thể cung cấp hiệu suất tốt hơn khi chúng tránh được chi phí đầu tư của ví dụ: chuyển ngữ cảnh luồng.

Cũng như khuôn khổ Twisted, cũng có các khối xây dựng máy chủ không đồng bộ trong thư viện chuẩn của Python: trước đây là asyncoreasynchat, nhưng bây giờ cũng là asyncio.

18

Trước hết Django là một khuôn khổ để viết ứng dụng web để nó cung cấp ORM, html templating, nó yêu cầu chạy một máy chủ http vv. Twisted giúp viết nhiều mã mức thấp hơn. Bạn có thể sử dụng xoắn để viết máy chủ http Django chạy trên. Nếu bạn sử dụng Django bạn bị giới hạn trong mô hình http, với xoắn nó có thể giao tiếp trong bất kỳ giao thức nào bạn thích bao gồm các giao thức đẩy. Vì vậy, đối với ví dụ chat của bạn, bạn nhận được một máy chủ có quy mô tốt hơn vì nó có thể đẩy ý kiến ​​cho những người đã đăng nhập VS với django mỗi khách hàng phải thăm dò liên tục.

chỉnh sửa để phản ánh ý kiến ​​của: sos-skyl

+0

không thực sự đúng; Django thực hiện các cuộc gọi IO đồng bộ, đó là lý do tại sao đó là HOẶC. – Henrik

+0

Nó không phải là tập trung vào không đồng bộ rất nhiều vì nó là những gì ngăn xếp trông giống như. Với Django nó là một máy chủ web, một thực hiện WSGI, Django, mã của tôi. Với Twisted nó là Twisted, mã của tôi. Sử dụng một xoắn có thể viết một máy chủ web, một máy chủ XMPP, một máy chủ IRC. Với Django rất nhiều tính linh hoạt đó đã biến mất, bạn bị ràng buộc với HTTP như là giao thức của bạn. – stonemetal

0

Bạn có thể sử dụng WHIFF thay vì một trong hai :). Hãy xem http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom sử dụng vòng lặp bỏ phiếu javascript với json để kiểm tra để cập nhật máy chủ. Bạn có thể có thể làm một cái gì đó tương tự ở Django, nhưng tôi không biết làm thế nào bởi vì tôi đã từ bỏ Django.

btw: Tôi hy vọng sẽ chuyển bản trình diễn này lên công cụ ứng dụng google như một dịch vụ hoàn chỉnh hơn khi cuộc sống của tôi bình tĩnh lại một chút.

+0

Nếu bạn sử dụng xoắn, bạn có thể sử dụng twisted.orbited để đẩy các bản cập nhật từ máy chủ đến các ứng dụng javascript đang chạy trong trình duyệt –

0

Nếu bạn muốn xem một số nguồn để tích hợp Twisted và Django, hãy xem Yardbird.

3

Trong xoắn, bạn có thể thực hiện các giao thức của riêng bạn. Django chắc chắn không thể làm điều này.

5

Ưu điểm lớn nhất đối với tôi là Twisted mang lại cho tôi một ứng dụng có trạng thái và có thể giao tiếp với nhiều khách hàng khác nhau bằng nhiều giao thức.

Đối với tôi, máy chủ Xoắn của tôi giao tiếp với một số cảm biến được cài đặt trong nhà và doanh nghiệp theo dõi việc sử dụng năng lượng. Nó lưu trữ dữ liệu và giữ dữ liệu và trạng thái gần đây trong các lớp python tiện dụng trong bộ nhớ. Yêu cầu thông qua xmlrpc từ django nhận trạng thái này và có thể trình bày dữ liệu gần đây cho người dùng. Công cụ Gridspy của tôi vẫn đang được phát triển nên trang web thực tế tại your.gridspy.co.nz của bạn là một bit pre-alpha.

Phần tốt nhất là bạn cần mã nhỏ đáng ngạc nhiên để tạo một máy chủ hiệu quả. Một số lượng tuyệt vời của công việc được thực hiện cho bạn.

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