在Django中分叉后关闭TCP端口80和443

时间:2012-10-18 03:38:54

标签: python django linux apache2

我正在尝试从一个在apache2 / WSGI Python中运行的Django应用程序中fork()和exec()一个新的python脚本进程。新的python进程被守护进程,因此它不与apache2保持任何关联,但我知道HTTP端口仍处于打开状态。新进程杀死apache2,但结果是新的python进程现在保持端口80和443打开,我不希望这样。

如何从新的python进程中关闭端口80和443?有没有办法获得对套接字句柄描述符的访问权限,以便它们可以被关闭?

1 个答案:

答案 0 :(得分:2)

如果使用subprocess模块执行脚本,close_fds构造函数的Popen参数可能会执行您想要的操作:

  

如果close_fds为true,则在执行子进程之前将关闭除0,1和2之外的所有文件描述符。

假设它们不是简单地关闭,前三个文件描述符传统上是stdinstdoutstderr,因此Django应用程序中的侦听套接字将是关闭的孩子的过程。