I would like to embed the great Bottle web framework into a small application (1st target is Windows OS). This app starts the bottle webserver thanks to the subprocess module.
import subprocess
p = subprocess.Popen('python websrv.py')
The bottle app is quite simple
@route("/")
def index():
return template('index')
run(reloader=True)
It starts the default webserver into a Windows console.
All seems Ok except the fact that I must press Ctrl-C to close the bottle webserver. I would like that the master app terminates the webserver when it shutdowns. I can’t find a way to do that (p.terminate() doesn’t work in this case unfortunately)
Any idea?
Thanks in advance
There are two ways to shutdown a reloading server:
1) You terminate p (using
os.kill(p.pid)orp.terminate()) and then change the modification time of ‘websrv.py’ (os.utime('websrv.py')) to trigger an automatic shutdown of the child process.2) You terminate p with
os.kill(p.pid, signal.SIGINT)which is identical to aCtrl-Cshutdown.