2009-12-22 33 views
5

Vì vậy, tôi đang cố gắng phát triển web nhiều hơn trong python và tôi đã chọn cherrypy, được lưu trữ bởi lighttpd w/fastcgi. Nhưng câu hỏi của tôi là một câu hỏi rất cơ bản: tại sao tôi cần phải khởi động lại lighttpd (hoặc apache) mỗi khi tôi thay đổi mã ứng dụng của tôi, hoặc mã cho một thư viện cơ bản?fastcgi, cherrypy và python

Tôi nhận ra câu hỏi này kéo dài từ hiểu biết cơ bản về mô hình fastcgi, vì vậy tôi mở cho bất kỳ trường học nào ở đây, nhưng tôi đã từng chỉ thay đổi tệp PHP và nó hiển thị, so với phải trả lại máy chủ web.

Bất kỳ sự minh mẫn/sự nhạo báng hữu ích nào được đánh giá cao.

+1

"thư bị trả lại"? Điều đó có nghĩa là "khởi động lại" hay cái gì đó? Thông thường trong máy tính "thư bị trả lại" đề cập đến một nỗ lực để truy xuất nội dung bị từ chối dưới dạng lỗi hoặc các khái niệm tương tự. –

+0

Yup, bị trả lại, như để khởi động lại quy trình. Thông thường trong kinh nghiệm của tôi folks luôn luôn nói về nảy Apache, Tomcat, vv vv – Wells

+0

Liên quan: http://stackoverflow.com/questions/1711483/python-web-hosting-why-are-server-restarts-necessary – miku

Trả lời

8

Điều này là do hiệu suất. Để phát triển, tự động tải là hữu ích. Nhưng đối với sản xuất, bạn không muốn tự động tải. Đây thực sự là một nút cổ chai có kích thước lớn trong PHP. Mỗi khi bạn truy cập một trang web PHP, máy chủ phải phân tích cú pháp và tải từng trang từ đầu. Với Python, tập lệnh đã được tải và chạy sau lần truy cập đầu tiên.

Như đã được chỉ ra, CherryPy có cài đặt tự động tải. Tôi khuyên bạn nên sử dụng máy chủ tích hợp sẵn của CherryPy để phát triển và sử dụng lighttpd để sản xuất. Điều đó có thể sẽ giúp bạn tiết kiệm thời gian. Các tutorial cho bạn thấy làm thế nào để làm điều này.

+0

Cảm ơn- Tôi nhận thấy rất nhiều nhận xét khi một Googling rằng flup dường như không hoạt động khi nạp tự động của cherrypy có ý tưởng nào không? Tôi đoán tôi có thể sử dụng một mô-đun WSGI không flup. – Wells

+2

Ghi nhớ rằng CherryPy thực sự là hai thành phần: một khung công tác và máy chủ. Nếu bạn đang sử dụng lighttpd, thì bạn chỉ sử dụng khung công tác. Nếu bạn sử dụng máy chủ trong phát triển, sau đó bạn không cần phải lo lắng về điều này vì nó sẽ autoreload automagically. Khi bạn chuyển sang sản xuất, * sau đó * Tôi sẽ chuyển sang lighttpd. –

0

Từ con trỏ của nhà văn hệ thống phần mềm xem: Điều này phụ thuộc vào cách siêu dữ liệu về quy trình máy chủ được tổ chức trong daemon của bạn (lighttpd hoặc fcgi). Một số chương trình được thiết kế để khởi tạo chỉ một lần - MOSTLY điều này cho phép mô hình lập trình nội bộ đơn giản hơn và hiệu quả hơn nhiều.

Thường thì rất khó để lập trình quá trình tải lại cấu hình máy chủ theo cách dễ dàng. Bạn có thể phải giới thiệu các khóa và các đối tượng sự kiện bên ngoài (các tín hiệu trong UNIX). Khi bạn có thể đồng bộ hóa cấu trúc dữ liệu theo thiết kế - tức là, chỉ khởi tạo một lần .... tại sao lại phức tạp bằng cách làm cho mô hình dữ liệu có thể sửa đổi nhiều lần?