2010-04-29 10 views
8

Thứ nhất:Ai đó có thể cho tôi một cái nhìn tổng quan kỹ thuật cấp cao về các chi tiết WSGI đằng sau hậu trường so với giao diện web khác chấp thuận với Python?

  1. tôi hiểu những gì WSGI là gì và làm thế nào để sử dụng nó
  2. tôi hiểu những gì phương pháp "khác" (Apache mod-python, fcgi, et al) là gì, và làm thế nào để sử dụng chúng
  3. tôi hiểu sự khác biệt thực tế của họ

tôi không hiểu là cách mỗi người trong số các phương pháp "khác" khác nhau làm việc so với cái gì đó như UWSGI, đằng sau những cảnh. Máy chủ của bạn (Nginx, vv) có gửi yêu cầu tới ứng dụng WSGI của bạn và UWSGI tạo một trình thông dịch Python mới cho mỗi yêu cầu được định tuyến đến nó không? Có bao nhiêu khác biệt so với các phương pháp vá lỗi truyền thống/khỉ khác là WSGI (ngoài giao diện Python khác, dễ dàng hơn mà WSGI cung cấp)? Tôi thiếu mất khoảnh khắc bóng đèn nào?

+0

Bạn có thể muốn có một cái nhìn tại [Tìm kiếm một sơ đồ giải thích WSGI] (http://stackoverflow.com/q/1303118/95735) –

+0

@PiotrDobrogost - cảm ơn! – orokusaki

Trả lời

8

Trừ CGI, một trình thông dịch Python mới gần như không bao giờ được tạo theo yêu cầu. Đọc:

http://blog.dscpl.com.au/2009/03/python-interpreter-is-not-created-for.html

này được viết bằng sự tôn trọng của mod_python mà còn áp dụng cho mod_wsgi và bất kỳ cơ chế WSGI lưu trữ sử dụng quá trình liên tục.

Cũng đọc:

http://www.python.org/dev/peps/pep-0333/#environ-variables

Ở đó bạn sẽ tìm thấy mô tả biến 'wsgi.run_once' mô tả. Điều này được sử dụng để chỉ ra cho một ứng dụng WSGI khi một cơ chế lưu trữ được sử dụng mà sẽ thấy một quá trình chỉ xử lý một yêu cầu và sau đó được thoát, tức là, CGI. Vì vậy, viết một ứng dụng hello world test để loại bỏ môi trường WSGI và xem nó được thiết lập cho những gì bạn đang sử dụng.

Cũng chú ý đến các biến 'wsgi.multiprocess' và 'wsgi.multithread'. Họ cho bạn biết nếu một máy chủ đa tiến trình đang được sử dụng sao cho có nhiều lần yêu cầu xử lý ứng dụng của bạn cùng một lúc. Biến 'wsgi.multithread' cho bạn biết liệu quá trình đó có đang xử lý nhiều yêu cầu trong các chuỗi đồng thời trong cùng một quá trình hay không.

Để biết thêm về mô hình đa tiến và multithread liên quan đến các hệ thống Apache nhúng, ví dụ như mod_python và mod_wsgi, và chế độ daemon mod_wsgi, xem:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

+0

@Graham cảm ơn câu trả lời của bạn. – orokusaki

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