2014-11-26 17 views
5

Tôi đang tạo ứng dụng python với ứng dụng trò chuyện. Ứng dụng trò chuyện chỉ dựa vào cơn lốc xoáy. Nhưng cuộc trò chuyện yêu cầu truy cập cơ sở dữ liệu khác nhau và Django ORM làm điều này đẹp. Tôi đang sử dụng websockets cơn lốc xoáy để trò chuyện. Vì vậy, tôi có các tùy chọn sau đây:Tornado WebSocket với Django ORM với phiên chia sẻ

  1. Run cả hai quá trình trên cổng khác nhau và mỗi khi tôi yêu cầu để truy cập vào các chức năng Django tôi sẽ thực hiện một yêu cầu asyncHTTPClient đến cảng khác và nhận được dữ liệu nhưng kết quả là tải thêm để django máy chủ
  2. Run Django bên Tornado máy chủ và thêm dự án django để virtualenv PYTHONPATH và sử dụng các chức năng Django trực tiếp nhưng điều này sẽ cho kết quả trong các hoạt động ngăn chặn

vậy nên cách tốt nhất để hợp nhất hai khuôn khổ những cái họ cả hai làm việc tốt mà không có sự thay đổi nhiều và vấn đề hiệu năng.

Trả lời

3

Tùy thuộc vào số lần bạn yêu cầu truy cập chức năng Django từ quy trình lốc xoáy. Nếu số lượng truy cập đó thấp, thì cách tiếp cận đầu tiên sẽ tốt hơn. Và nếu lớn, sau đó chọn thứ hai.

Nhưng tôi sẽ cố gắng thực hiện các phương pháp tiếp cận đầu tiên, bởi vì:

  • Hầu hết các logic dự án sẽ nằm trong dự án django. Tornado sẽ chỉ cung cấp phương tiện để trò chuyện
  • Nếu bạn truy cập cơ sở dữ liệu từ lốc xoáy, thì bạn sẽ cần phải đồng bộ hóa các mô hình django và mô hình lốc xoáy của mình. Ngoài ra, trong cơn lốc xoáy tốt hơn là sử dụng trình điều khiển cơ sở dữ liệu không đồng bộ. Vì vậy, cách tiếp cận đầu tiên sẽ tránh được nỗi đau này.

Theo tôi, sẽ tốt hơn khi triển khai một số API REST ở phía django và ở bên lốc xoáy, và các quy trình này sẽ liên lạc qua API này với nhau. Cố gắng thiết kế kiến ​​trúc của bạn theo cách như vậy, bạn sẽ cần phải sử dụng API này càng hiếm càng tốt.

Tôi khuyên bạn nên kiểm tra (hoặc thậm chí có thể sử dụng) dự án có tên centrifuge. Nó được xây dựng trên đỉnh của cơn lốc xoáy và nó cung cấp các phương tiện để thực hiện các thông điệp thời gian thực. Nó có REST api, vì vậy bạn có thể kiểm soát nó từ bất kỳ quá trình nào khác. Trong dòng công việc này, dòng công việc ly tâm django + được mô tả: https://stackoverflow.com/a/26930534/821594

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