2009-07-01 33 views
10

Tôi có một cài đặt django trên apache bằng cách sử dụng nhúng wsgi. Tôi KHÔNG có gốc trên máy.Tải lại tập lệnh django wsgi mà không có gốc

Làm cách nào tôi có thể yêu cầu apache tải lại bản sao python khi triển khai mã nguồn mới?

Tôi đã thử xóa tất cả các tệp .pyc và nó vẫn đang chạy mã cũ.

Trả lời

5

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

Bài viết này về tải lại mã nguồn với mod_wsgi đi vào làm thế nào để tải lại mã nguồn, và thậm chí làm thế nào để tạo ra một kịch bản màn hình để tự động tải lại daemon khi bạn thực hiện thay đổi nguồn. Nó thực sự tốt cho việc thiết lập một môi trường phát triển bằng cách sử dụng mod_wsgi.

+1

Liên kết đó dường như đề xuất 'MaxRequestsPerChild 1' sẽ giết hiệu suất của tôi. Tôi đang tìm cách tải lại nó bất cứ khi nào tôi đẩy. –

+0

Bạn không cần phải sử dụng ... kiểm tra ba phần tiếp theo trong bài viết về chế độ daemon và giám sát thay đổi mã. –

+0

Chế độ Daemon là câu trả lời. Hai dòng trong cấu hình apache, và nó không chi phí phải thực hiện. cảm ơn –

14

Nếu bạn đang chạy mod_wsgi trong chế độ daemon với apache, bạn có thể không phải khởi động lại apache để tải lại.

Tôi chỉ cần chạm vào tệp wsgi của mình (unix: chạm vào cập nhật 'ngày đã lưu' của tệp) và apache tải lại nó vào lần truy cập tiếp theo/lần truy cập web.

Xem http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

... miễn là bạn có thể thay đổi dấu thời gian trên kịch bản WSGI.

+3

"touch filename.wsgi" là cách chính xác để làm điều đó, và không yêu cầu root hoặc khởi động lại apache. Vì tôi thường chỉ muốn làm điều này ngay lập tức sau khi kiểm tra mã mới, tôi thiết lập bí danh để lấy mã mới nhất và chạm vào wsgi cùng một lúc, ví dụ: bí danh upcrest = 'cd/home/crest/sites/projects/ourcrestmont; svn up; chạm /home/crest/our/ourcrestmont.wsgi ' – shacker

+0

Chính xác! Ý tưởng tốt với bí danh lệnh. – joej

+0

Có một vài điều thú vị, xem http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Reloading_In_Embedded_Mode – Wernight

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