如何使用daemontools运行Django服务器

2024-04-19 18:09:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的是一个默认的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控制子进程的整个进程树呢?在


Tags: 文件topathdjangopy命令内容bin
1条回答
网友
1楼 · 发布于 2024-04-19 18:09:57

这可以通过运行带有noreload选项的django服务器来解决。在

Django只在noreload未被传递时生成另一个进程,这仅适用于开发环境。在

https://github.com/django/django/blob/master/django/utils/autoreload.py#L290

在非开发环境中,您不希望重新加载django服务器,因为您不会在这种环境中更改代码。所以用noreload运行服务器可以解决这个问题。在

但是,不建议在生产环境中运行默认的django服务器。在

相关问题 更多 >