从子流程启动时如何停止瓶子Web服务器

2024-09-30 02:22:46 发布

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

我想将伟大的Bottleweb框架嵌入到一个小应用程序中(第一个目标是Windows操作系统)。这个应用程序启动瓶子网络服务器多亏了子流程模块。在

import subprocess
p = subprocess.Popen('python websrv.py')

瓶子应用程序非常简单

^{pr2}$

它将默认的web服务器启动到Windows控制台中。在

除了我必须按Ctrl-Web服务器外,似乎所有的瓶子都关闭了。我希望主应用程序在关闭时终止web服务器。我找不到这样做的方法(p.terminate()在这种情况下不起作用)

有什么想法吗?在

提前谢谢


Tags: 模块import网络服务器框架web应用程序瓶子
3条回答

有两种方法可以关闭重新加载的服务器:

1)终止p(使用os.kill(p.pid)p.terminate()),然后更改'websrv.py网站'(os.utime('websrv.py'))来触发子进程的自动关闭。在

2)使用os.kill(p.pid, signal.SIGINT)终止p,这与Ctrl-C关闭相同。在

从0.8.1开始,重新加载服务器足够智能,可以清理孤立进程。现在有几种方法可以终止服务器:

  • 点击Ctrl-C或发送SIGINT到父进程。(推荐)
  • 终止父进程。孩子会在2秒内优雅地死去。在
  • 终止子进程或系统出口()具有除3以外的任何状态代码。父母会马上死去。在

如果瓶子处于重新装载模式,终止过程似乎不起作用。在这种情况下,它启动它自己的一个子进程。在

如果reload设置为False,则终止似乎可以正常工作。在

相关问题 更多 >

    热门问题