我正在做一个Python网络服务器(例如使用Flask或Bottle等),我想启动它,并能够关闭SSH终端并让它运行。
以何种方式推荐使用pythonic?
Create a daemon,并使用python myapp.py start
,python myapp.py stop
。然而,python-daemon模块几乎没有doc,不支持在退出之前触发一个动作(我向它添加了几行to support it),所以它'对于一个没有文档/没有真正维护过的模块,有点破解,所以即使它有效,我也不会百分之百满意。
使用nohup python myapp.py &
,但缺点是你必须ps aux |grep py
,然后找到相关的PID和kill 12345
来阻止它。同样,它不允许在停止之前执行操作(例如将数据库保存到磁盘等),因此它不是一个非常好的解决方案。
screen -dmS myapp python myapp.py
启动,然后您可以从SSH终端注销。然后,您可以使用screen -r myapp
再次连接到它,然后CTRL + C可以停止它(提供KeyboardInterrupt
已妥善处理)。这就是我目前使用的内容。但我不确定是否使用screen
让服务器永远运行是一个好主意(如果日志记录确实是非常的话会发生什么?还有引入screen
层的风险让它臃肿?)
另一种清洁解决方案?我希望有一个比1,2,3更清洁的解决方案都有缺点。
注意:我希望避免安装新的管理员(新贵或主管),并尽可能使用尽可能少的工具,以避免新的复杂层。