我运行的是一个默认的django web服务器管理.py文件,如何使用svcdaemontools对其进行守护
daemontools中运行文件的内容是
#!/bin/bash
exec setuidgid <myuser> /usr/bin/python <path/to/manage.py> runserver 2>&1
内容管理.py在
^{pr2}$子进程(管理.py在execute_from_命令行(导入自django.core.management公司)无法通过svc命令控制的函数。下面是svscanboot的进程树。在
/bin/sh /usr/bin/svscanboot
\_ svscan /etc/service
\_ supervise myapp
\_ /usr/bin/python </path/to/manage.py> runserver
\_ /usr/bin/python </path/to/manage.py> runserver
现在,如果我执行svc-d,它会向第一个runserver进程发送一个术语信号,结果就是这个进程被终止,第二个进程成为一个孤立进程,无法通过svc命令进行控制。在
那么如何使用daemontools控制子进程的整个进程树呢?在
这可以通过运行带有noreload选项的django服务器来解决。在
Django只在noreload未被传递时生成另一个进程,这仅适用于开发环境。在
在非开发环境中,您不希望重新加载django服务器,因为您不会在这种环境中更改代码。所以用noreload运行服务器可以解决这个问题。在
但是,不建议在生产环境中运行默认的django服务器。在
相关问题 更多 >
编程相关推荐