2016-05-03 40 views
8

Từ official doc nói:Werkzeug chính xác là gì?

Werkzeug là một thư viện tiện ích WSGI cho Python.

Tuy nhiên, khi tôi chạy ứng dụng Flask web của tôi, tôi nhận thấy rằng trong tiêu đề phản hồi từ máy chủ, có thấy

HTTP/1.0 200 OK 
Content-Type: text/html; charset=utf-8 
Content-Length: 13 
Server: Werkzeug/0.11.9 Python/2.7.10 
Date: Tue, 03 May 2016 12:50:08 GMT 

Trên dòng ra nó nói rằng máy chủ là Werkzeug.

Tại sao điều đó không có nghĩa là Werkzeug là máy chủ web như Apache?.

Trả lời

1

Không, nó không phải là WEB SERVER như Apache. Đó là một thư viện CGI. Vì APACHE (hoặc ứng dụng FLASK của bạn) có thể đang sử dụng thư viện để phục vụ một số yêu cầu HTTP, nó có thể thêm tiêu đề đó vào phản hồi.

+0

Có phương pháp nào để kiểm tra các máy chủ chính xác các ứng dụng web đang sử dụng? Tôi nghĩ rằng tiêu đề yêu cầu sẽ hiển thị máy chủ trong dòng 'Server:'. –

+0

Thông thường những gì trên tiêu đề "Máy chủ" là chính xác. Nhưng hãy nhớ rằng nếu ai đó muốn ẩn thông tin đó, cô ấy có thể dễ dàng thay đổi tiêu đề đó thành bất kỳ thứ gì cô ấy muốn (nếu cô ấy là người chạy máy chủ web) –

+0

Trong trường hợp này, thông tin tiêu đề có thể chính xác nhất. Vì 'werkzeug' không xuất xưởng với một máy chủ web phát triển nhỏ - đó có lẽ là những gì tạo ra phản ứng trên. Chúng tôi sẽ chỉ biết chắc chắn nếu OP giải thích thiết lập của mình một cách chi tiết hơn ... – sebastian

9

Vì không.

Trong thiết lập của bạn, hầu hết bạn có thể sử dụng "máy chủ phát triển" (chức năng run_simple) để thử nghiệm. Vì vậy, nó là trong trường hợp sử dụng này như một (rất) người nghèo của Apache, nhưng chỉ trong một cảm giác rằng nó có thể trả lời các yêu cầu HTTP một cách chính xác.

Nếu bạn kiểm tra các tài liệu http://werkzeug.pocoo.org/docs/serving/ , bạn sẽ thấy ghi chú sau:

Các máy chủ phát triển không có ý định sẽ được sử dụng trên các hệ thống sản xuất. Nó được thiết kế đặc biệt cho mục đích phát triển và thực hiện kém dưới tải trọng cao. Đối với các thiết lập triển khai, hãy xem các trang Triển khai ứng dụng.

5

Không nó không phải là

Werkzeug (thư viện WSGI) cũng giống như một người giao tiếp giữa mã python của bạn và http nginx/apache máy chủ

Đây là trường hợp sử dụng đầy đủ của Werkzeug WSGI:

WSGI có hai mặt: phía "máy chủ" hoặc "cổng" (thường là một trang web) rver chẳng hạn như Apache hoặc Nginx) và bên "ứng dụng" hoặc "khung" (bản thân tập lệnh Python). Để xử lý yêu cầu WSGI, phía máy chủ thực thi ứng dụng và cung cấp thông tin môi trường và chức năng gọi lại ở phía ứng dụng. Ứng dụng xử lý yêu cầu , trả lại phản hồi cho phía máy chủ bằng cách sử dụng chức năng gọi lại được cung cấp.

Giữa máy chủ và ứng dụng , có thể có một phần mềm trung gian WSGI, thực hiện cả hai mặt của API. Máy chủ nhận được yêu cầu từ khách hàng và chuyển tiếp yêu cầu đó đến phần mềm trung gian. Sau khi xử lý, nó sẽ gửi yêu cầu đến ứng dụng. Phản hồi của ứng dụng được chuyển tiếp bởi phần mềm trung gian đến máy chủ và cuối cùng là cho khách hàng.Có thể có nhiều phần trung gian tạo thành một chồng các ứng dụng tương thích với WSGI.

Hy vọng nó giúp