Làm thế nào để tải lại uwsgi duyên dáng qua tập lệnh bash?


9

Tôi có một ứng dụng django đang thực thi một tập lệnh bash. Tôi yêu cầu máy chủ nginx khởi động lại để tôi chạy /etc/init.d/nginx reloadhoạt động tốt. Tôi đã sử dụng restart uwsgicho uwsgi nhưng tôi cần thực hiện tải lại duyên dáng thay vì khởi động lại máy chủ cứng.

Tôi có thể làm cái này như thế nào?


Tôi hiện đang chạy một reload uwsgichức năng bash thông qua subprocess.popen. Dường như chỉ tải lại quá trình đang gọi quy trình con chứ không phải tất cả các trang web được lưu trữ bởi đối tượng uwsgi. importing uwsgivà chạy uwsgi.reloaddường như cũng chỉ ảnh hưởng đến quá trình gọi. Có một công tắc cho uwsgi thông qua python hoặc bash cho phép khởi động lại tất cả các quá trình uwsgi

Câu trả lời:


0

Bạn có thể làm điều đó trong python

import uwsgi
uwsgi.reload()

uwsgi.reload () hoạt động không liên tục. nó dường như đang khởi động lại máy chủ trước khi một số quy trình của tôi kết thúc. Tôi đang chạy ứng dụng này thông qua một ứng dụng django và muốn nó khởi động lại toàn bộ máy chủ.
darren

10

ĐĂNG KÍ

Bạn có thể khởi động lại uWSGI bằng cách gửi tín hiệu SIGHUP đến quy trình uWSGI của bạn như sau:

kill -HUP <process-id>

Nếu bạn muốn tự động hóa điều này trong tập lệnh bash, bạn có thể yêu cầu uWSGI ghi lại id tiến trình của nó bằng cách cung cấp pidfiletùy chọn, ví dụ như:

--pidfile=/tmp/uwsgi.pid

Sau đó, bạn có thể tải lại quá trình bằng cách:

uwsgi --reload /tmp/uwsgi.pid

chạm lại

Bạn cũng có thể bắt đầu uWSGI bằng touch-reloadđối số, trong đó chỉ định một tệp mà khi chạm vào sẽ khiến uWSGI tải lại:

--touch-reload=/some/file

Sau đó, uWSGI sẽ tải lại khi bạn chạm vào tệp:

touch /some/file

Hãy nhớ rằng bạn chỉ có thể tải lại uWSGI khi nó chạy với chế độ xử lý chính, nhưng đó thường là trường hợp.

Thêm thông tin: http://uwsgi-docs.readthedocs.io/en/latest/Manloyment.html#reloading-the-server

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.