我遇到了什么问题:
我需要正确以守护进程模式启动我的Bottle应用程序,同时保留bottle.run()
命令的所有功能。
我尝试了什么:
BottleDaemon
。它并不适合我,因为我需要更改服务器变量(并在将来使用bottle.run()
执行更多操作),但bottledaemon.daemon_run()
不支持它。daemonize.py
。进程退出时没有任何日志和stdout / stderr。supervisor
。我的shell帐户无权访问root或sudo,我认为这就是为什么它会导致我Permission denied
出现subprocess.Popen
错误。 UPD。当我尝试通过supervisor
Traceback (most recent call last):
File "/home/maxlunar/bottle/app.py", line 20, in <module>
run(server='tornado', host='xxxx', port=xxxxx, reloader=True)
File "/home/maxlunar/.local/lib/python3.5/site-packages/bottle.py", line 3079, in run
p = subprocess.Popen(args, env=environ)
File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1282, in _execute_child
raise child_exception_type(errno_num, err_msg)
PermissionError: [Errno 13] Permission denied
没有supervisor
:
(bottle) maxlunar@Lydia:bottle$ python app.py
Bottle v0.12.13 server starting up (using TornadoServer())...
Listening on http://xxxxx:xxxxx/
Hit Ctrl-C to quit.
这是解决问题的另一种方法吗?提前谢谢。
答案 0 :(得分:0)
(答案基于评论中OP的其他信息。)
要在后台运行服务器并在注销时退出 ,可以使用nohup
:
nohup python myscript.py &