Tôi đang cố gắng để sinh ra một quá trình django mà sống sau khi kịch bản gọi điện thoại đã chết. Nhưng tôi cần nó là PID.Liệu manage.py có thay đổi PID của nó không?
Vì vậy, tôi đã viết đoạn mã sau:
def runserver():
print("START PID: " + str(os.getpid()))
pid = os.fork()
if pid == 0:
#cmd = "/usr/bin/env python manage.py runserver 0.0.0.0:2869"
print("IN THE CHILD PID: " + str(os.getpid()))
os.execvp("python", ["", "manage.py", "runserver", "0.0.0.0:2869"])
else:
print("PARENT PID: " + str(os.getpid()))
print("CHILD PID: " + str(pid))
updatepid("runserver", pid)
này mang lại cho tôi kết quả như sau:
START PID: 13019
PARENT PID: 13019
CHILD PID: 13020
IN THE CHILD PID: 13020
Nhưng bây giờ khi tôi kiểm tra các quá trình sống:
> ps aux | grep python | grep -v grep
sandro 13031 0.4 0.3 296080 23756 pts/2 Sl 22:14 0:01 /home/sandro/.virtualenvs/polling/bin/python2.7 manage.py runserver 0.0.0.0:2869
Các pid đã thay đổi! Chuyện quái quỷ gì đang xảy ra???
Tôi * biết * Tôi sẽ hối tiếc khi yêu cầu điều này, nhưng * tại sao * bạn có bắt đầu máy chủ lưu trữ từ tập lệnh của mình không? –
Chủ yếu là một thử nghiệm cho bản thân mình. Chỉ cần đặt cùng một kịch bản hacky nhanh chóng theo dõi tất cả các quy trình cho trang web django thú cưng của tôi. Không phải lo lắng, không phải là một phần của sản phẩm hay bất cứ thứ gì;) Khi tôi phát minh ra bánh xe, có một công cụ đã làm những thứ như thế này mà bạn có thể gợi ý không? – Sandro
Không thực sự bất cứ điều gì tôi có thể đề nghị, kể từ khi tôi luôn luôn chạy Django dưới mod_wsgi. Và có rất nhiều công cụ quản lý httpd trên mạng. –