2010-04-07 37 views
16

Ai đó có thể giải thích sự khác biệt giữa apache mod_wsgi ở chế độ daemon và django fastcgi ở chế độ luồng. Cả hai đều sử dụng chủ đề cho đồng thời tôi nghĩ. Giả sử rằng tôi đang sử dụng nginx làm giao diện người dùng với apache mod_wsgi.Triển khai Django (fastcgi, apache mod_wsgi, uwsgi, gunicorn)

UPDATE:

Tôi đang so sánh django xây dựng trong fastcgi (./ phương pháp manage.py = luồng maxchildren = 15) và mod_wsgi trong chế độ 'daemon' (WSGIDaemonProcess dụ đề = 15). Cả hai đều sử dụng các chủ đề và có được GIL, tôi có đúng không?

UPDATAE 2:

Vì vậy, nếu họ cả hai đều giống nhau, là có bất kỳ lợi ích của apache mod_wsgi chống fastcgi. Tôi thấy ưu như vậy fastcgi:

  • chúng ta không cần apache
  • chúng ta tiêu thụ ít RAM
  • tôi nhận thấy rằng fastcgi có ít overhead

UPDATAE 3:

Tôi hiện đang hài lòng với nginx + uwsgi.

UPDATAE 4:

Tôi bây giờ hài lòng với nginx + gunicorn :)

Trả lời

10

Không phải sử dụng đề để có thể xử lý yêu cầu đồng thời. Nó phụ thuộc vào cách bạn cấu hình chúng. Bạn có thể sử dụng nhiều quy trình trong đó mỗi quy trình là một luồng đơn nếu bạn muốn.

Đối với nền thêm về mô hình quy trình/luồng mod_wsgi xem:

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

Các mô hình tương tự mặc dù mod_wsgi xử lý quản lý quy trình riêng của mình. Điều gì xảy ra trong FASTCGI theo như quản lý quy trình phụ thuộc vào cơ chế lưu trữ FASTCGI bạn đang sử dụng và bạn không nói đó là cái gì. Một sự khác biệt nữa là FASTCGI vẫn cần một FASTCGI riêng biệt với WSGI bridge như flup, nơi mod_wsgi không cần bất kỳ loại cầu nào như thực hiện giao diện WSGI một cách tự nhiên.

Cuối cùng, quá trình FASTCGI là một exec/fork của một số quy trình giám sát hoặc máy chủ web, phụ thuộc vào cơ chế lưu trữ. Trong mod_wsgi các quá trình là một ngã ba chỉ của tiến trình cha mẹ Apache. Nói chung điều này không quan trọng quá nhiều nhưng có một số ý nghĩa.

Có những khác biệt khác nhưng chúng phát sinh nhiều hơn vì mod_wsgi cung cấp nhiều chức năng và khả năng cấu hình hơn so với cơ chế lưu trữ FASTCGI.

Dù sao thì, câu hỏi có hơi mơ hồ, bạn có thể cụ thể hơn về những gì bạn muốn biết hoặc tương phản giữa cả hai và tại sao? Câu trả lời có thể sau đó có thể được nhắm mục tiêu tốt hơn.

+0

Tôi đang so sánh django được xây dựng trong fastcgi (./ manage.py method = threaded maxchildren = 15) và mod_wsgi trong chế độ 'daemon' (các ví dụ ví dụ WSGIDaemonProcess = 15). –

+0

Có, cả hai đều dựa vào đa luồng để xử lý các yêu cầu đồng thời. GIL được sử dụng ngay cả khi một máy chủ WSGI đơn luồng, bạn không thể dễ dàng tránh được nó mà không cần biên dịch lại mã nguồn Python và vô hiệu hóa hỗ trợ luồng. Làm điều đó mặc dù và bạn không thể sử dụng mod_wsgi vì nó không hỗ trợ Python có luồng bị tắt. –

+0

Ý của bạn là "GIL được sử dụng ngay cả khi một máy chủ WSGI đơn luồng"? Là nó được sử dụng khi chúng ta cấu hình mod_wsgi để xử lý ngã ba thay vì chủ đề? –

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