2012-06-13 35 views
18

Tôi đang sử dụng gevent trong ứng dụng Python của tôi (dựa trên Django). Tuy nhiên, tôi bây giờ tự hỏi làm thế nào để chạy nó trong sản xuất. Tôi nên sử dụng máy chủ nào? Trong quá trình phát triển, tôi sử dụng gevent.pywsgi, nhưng sản phẩm đã sẵn sàng chưa? Tôi cũng đã nghe nói về gunicorn, nhưng tôi đã nhìn thấy một số khá bad benchmarks về nó.Làm thế nào để chạy gevent trong sản xuất

Lưu ý: Tôi cần SSL.

+4

Hai điểm về điểm chuẩn này. 1.) Kiểm tra gunicorn sử dụng nhân viên đồng bộ hóa mặc định chứ không phải nhân viên gevent mà bạn đang muốn sử dụng. 2.) Từ phần tóm tắt "Nếu có một điều làm cho điểm chuẩn này rõ ràng là hầu hết các máy chủ Web Python đều có hiệu suất tuyệt vời và nếu bạn cảm thấy mọi thứ chậm thì điều đầu tiên cần xem là ứng dụng của riêng bạn." –

+8

Xem câu trả lời cho một câu hỏi tương tự (http://stackoverflow.com/questions/7855343/run-web-app-with-gevent/7857201#7857201), tác giả của gevent mình nói, trong một nutshell, "Sử dụng gunicorn. " – akent

Trả lời

26

Gunicorn thực sự là lựa chọn tốt nhất. Nó nhanh, nó được viết bằng python tinh khiết (giúp dễ triển khai trên các dịch vụ được lưu trữ như Heroku), và nó được duy trì và sử dụng tốt cho một lượng lớn ứng dụng web Python.

Theo mặc định, Gunicorn sử dụng một lớp nhân viên đồng bộ để phục vụ các yêu cầu, nhưng có thể dễ dàng cấu hình để sử dụng gevent bằng cách thêm -k gevent vào lệnh chạy.

Chỉ cần lưu ý nhanh: bạn nên luôn chạy gunicorn sau proxy như NGINX, Varnish, v.v. vì điều này sẽ cho phép gunicorn xử lý nhiều yêu cầu hơn so với nếu không, do phản hồi đệm.

+4

Tôi đã thấy rằng tôi cần phải vô hiệu hóa bộ đệm nếu tôi sử dụng nó với gevent. Nó có hủy bỏ lợi ích của Nginx không? – Flavien

+0

Điểm của việc sử dụng HTTP trên máy chủ back-end là gì? Không giống như FastCGI, SCGI và uwsgi, HTTP không được thiết kế cho giao tiếp từ đầu đến cuối và sử dụng nó cho mục đích đó có những hạn chế và vấn đề của nó. –

+0

Tôi tin rằng bạn không cần phải lo lắng về việc chạy với proxy ngược lại như nginx khi sử dụng Heroku vì lưới định tuyến xử lý nó. – dhackner

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