【发布时间】:2016-02-23 21:53:27
【问题描述】:
当 Django 服务器启动时,我只能看到一个 Django 服务器实例在后台运行。但过了一会儿,我可以看到多个实例正在运行。
输出:
root@GoldenGate:~# ps |grep python
1592 root 79636 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
2749 root 27936 S python /root/celestial_NAS/manage.py runsslserver --certificate /etc/ssl/certs/server.crt --key /etc/ssl/private/ser
2750 root 21056 S python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
3156 root 60160 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
3185 root 87764 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
3193 root 61188 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
8023 root 42732 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
8107 root 68360 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
8145 root 43760 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
9163 root 82712 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
12351 root 73484 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
13567 root 1304 S /bin/sh -c python /root/celestial_NAS/changeadminpassword.py
13568 root 16684 R python /root/celestial_NAS/changeadminpassword.py
13578 root 1304 S grep python
16450 root 78608 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
19979 root 48884 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
24374 root 56060 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
25372 root 59132 S /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
root@GoldenGate:~#
这会影响系统的性能,请您帮我找出启动具有多个进程 ID 的单个 runserver(Django 服务器)的多个实例背后的根本原因。
【问题讨论】:
-
你对settings.py做了什么修改吗?
-
django 服务器不是为生产环境构建的。您应该使用一些 WSGI 服务器(mod_wsgi、uwsgi、gunicorn 等)加上某种 HTTP 服务器,如 Nginx、Apache 等。通常,当文件更改时,开发服务器会生成一个新进程并杀死旧进程。如果运行 django 的用户无权终止进程(或者可能是类似的东西),那么进程将继续存在。正确的解决方案是在远程机器上进行生产设置。
-
@T.Chmelevskij ...您好,感谢您的回复...我修改了 settings.py 以添加 django 包和其他会话安全设置,会话超时。
-
@theWanderer4865,您好,感谢您提供信息...正如您所料,我正在使用 WSGI 服务器,但是“您告诉的一点如果正在运行 django 的用户没有终止进程的权限(或者可能是类似的东西)进程会一直存在。“,这里的用户是 root 拥有所有权限,所以这可能不是问题。
-
@T.Chmelevskij, stackoverflow.com/questions/5576305/… ,这是其他人遇到相同问题的链接,但我无法从中找到解决方案,请您也看看这个跨度>
标签: python django django-admin