2011-10-21 40 views
14

Tôi muốn thử chơi xung quanh với gevent như một máy chủ web và khung ứng dụng. Tôi không thấy bất kỳ cách nào để "khởi động lại" máy chủ hoặc cập nhật mã ứng dụng mà không bị giết và bắt đầu lại toàn bộ ứng dụng python.chạy ứng dụng web với gevent

Đây có phải là cách thực hiện? Có lẽ nó chỉ là một vấn đề của tôi hiểu một mô hình khác nhau theo cách apache.

Ngoài ra, dưới dạng câu hỏi liên quan đến bán, thậm chí là một ý tưởng hay để chạy máy chủ web VÀ chính trang web/dịch vụ thông qua gevent. Tôi đã nhìn thấy triển khai khác bằng cách sử dụng gunicorn cho máy chủ và gevent cho các ứng dụng nhưng từ các tiêu chuẩn tôi đã nhìn thấy, gevent xa tốt hơn gunicorn như một máy chủ khi nói đến mở rộng quy mô.

+2

Một giải pháp nếu bạn muốn chạy gevent trực tiếp nhưng giữ cho máy chủ của bạn có sẵn ngay cả khi nâng cấp là đặt trình cân bằng tải trước hai phiên bản gevent. Nginx có thể hoạt động như một bộ cân bằng tải đơn giản bằng cách có hai máy chủ trong định nghĩa ngược dòng. Bằng cách khởi động lại một máy chủ wsgi gevent tại một thời điểm bạn không có thời gian chết. Tuy nhiên, lợi thế nhỏ trong bộ nhớ so với chạy gunicorn không phải là giá trị nó trong thời gian dài vì sự phức tạp thêm, imho. –

+0

@DanielEriksson Đề xuất tốt. – Endophage

Trả lời

23

Gunicorn có 3 công nhân gevent:

  • gevent -k (sử dụng phân tích cú pháp HTTP gunicorn của)
  • -k gevent_pywsgi (sử dụng mô-đun gevent.pywsgi)
  • -k gevent_wsgi (sử dụng mô-đun gevent.wsgi)

gevent.wsgi là máy chủ HTTP nhanh dựa trên libevent.

gevent.pywsgi là máy chủ WSGI được triển khai bằng Python.

Lý do tồn tại của gevent.pywsgi là libevent-http có số few limitations, chẳng hạn như không hỗ trợ lưu giữ, phát trực tuyến, ssl và websockets.

Lưu ý rằng alpha version (1.0a3) of gevent mới sử dụng libev và không bao gồm máy chủ WSGI dựa trên libevent-http. Hiện tại, gevent.wsgi ở đây là bí danh cho gevent.pywsgi.

Các lớp máy chủ trong gevent không có bất kỳ tính năng nào liên quan đến quản lý quy trình, khởi động lại, tải lại, v.v. Những tính năng này là cần thiết để triển khai. Gunicorn cung cấp cho các máy chủ WSGI của gevent. Sử dụng nó.

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