2011-10-29 29 views
5

Tôi đang chạy django trên xoắn trong một thùng chứa wsgi. Rõ ràng là tôi tránh tất cả những thứ không đồng bộ với việc trì hoãn bên trong mã django của tôi bởi vì theo tài liệu, khả năng async xoắn không được phép bên trong các ứng dụng WSGI.Sử dụng các từ bị xoắn trong một thùng chứa WSGI

Tuy nhiên, tôi muốn sử dụng twisted.words bên trong ứng dụng WSGI của tôi để gửi yêu cầu đến máy chủ jabber. Điều này có được tính là công cụ không đồng bộ hoặc tôi có thể sử dụng nó trong ứng dụng của mình không? Điều gì có thể xảy ra nếu tôi đã gửi twisted.words jabber yêu cầu một máy chủ xmpp bên trong WSGI?

Hơn nữa, tôi có một câu hỏi chung chung hơn. Có bất kỳ lý do nào của WSGI container xoắn được đa luồng (là nó đa luồng?) Vì nó cũng được biết đến GIL python của chỉ làm giảm hiệu suất tổng thể của một kịch bản với chủ đề.

Cảm ơn mọi thư trả lời.

Trả lời

0

Để gọi hàm trong vòng lặp sự kiện chính (chuỗi I/O) trong Xoắn từ một chuỗi khác (chuỗi không phải I/O, tức là chuỗi ứng dụng WSGI), bạn có thể sử dụng reactor.callFromThread(). Nếu bạn muốn đợi kết quả, hãy sử dụng threads.blockingCallFromThread(). Vì vậy, bạn có thể gọi các chức năng sử dụng twisted.words Xem Using Threads in Twisted.

Để tìm hiểu xem thùng chứa wsgi có kiểm tra đa luồng hay không, hãy kiểm tra wsgi.multithread nó sẽ trả về giá trị đúng cho hộp chứa xoắn.

Các thùng chứa WSGI đa luồng để hỗ trợ nhiều lần một yêu cầu (không cần thiết nhưng nó giúp cuộc sống dễ dàng hơn bằng phần mềm hiện có). Nếu không (nếu bạn không sử dụng các phương tiện khác để giải quyết nó) toàn bộ máy chủ của bạn chặn trong khi trình xử lý yêu cầu của bạn chờ câu trả lời từ cơ sở dữ liệu. Một số người tìm thấy nó đơn giản hơn để viết xử lý yêu cầu ít lo lắng về việc chặn các yêu cầu khác nếu không có nhiều yêu cầu đồng thời.

Chức năng bằng Python thực hiện các công việc đòi hỏi nhiều CPU khi các vấn đề hiệu năng có thể sử dụng thư viện giải phóng GIL trong quá trình tính toán hoặc chuyển chúng sang các quy trình khác. Mạng, I/O đĩa thường xuyên trong các ứng dụng web thường chậm hơn nhiều so với CPU.

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