![](/img/trans.png)
[英]How do I keep my python backend scripts running forever on Microsoft Windows?
[英]How do I keep a python HTTP Server up forever?
我在python中编写了一个简单的HTTP服务器,通过Web UI管理服务器上托管的数据库。 它功能完善,按预期工作。 然而,它有一个巨大的问题,它不会留下来。 它会工作一个小时左右,但如果在返回使用它时长时间不使用,我每次都必须重新初始化它。 现在我使用的方法是:
def main():
global db
db = DB("localhost")
server = HTTPServer(('', 8080), MyHandler)
print 'started httpserver...'
server.serve_forever()
if __name__ == '__main__':
main()
我在linux服务器的后台运行这个,所以我会运行像sudo python webserver.py这样的命令来分离它,但正如我之前提到的那样,它会退出。 任何建议都是值得赞赏的原因,因为它看起来我不明白为什么它关闭。
您可以使用python-daemon包或使用pywin32的Windows服务在Python中编写UNIX守护程序 。
不幸的是,我知道没有“可移植”的解决方案来编写守护进程/服务进程(用Python或其他方式)。
这是关于驾驶的故事中的一条建议。 你当然想要安全驾驶(找出你的程序失败的原因并修复它)。 在(罕见?)崩溃的情况下,某些监视基础结构(如monit )可以帮助重新启动崩溃的进程。 您可能不希望用它来报告碰撞,就像您每次停车时都不想部署安全气囊一样。
您是否尝试过在屏幕会话中运行它?
$ screen -L sudo python webserver.py
好吧,第一步是找出它崩溃的原因。 有两种可能的可能性:
在前一种情况下,你可以通过try-except将它包装在一个循环中,使它永远存在。 记录错误详细信息可能是个好主意。
后一种情况有点棘手,因为它可能是由各种各样的事情引起的。 如果你在前台运行脚本会发生什么? 如果没有,也许运行某种维护服务会终止你的脚本?
不是一个完整的答案,但也许足以帮助您诊断问题。
作为屏幕的替代品, NoHup将确保您在注销后继续运行。
它值得检查日志,看看为什么它被杀死/退出以及它可能与操作系统无关,而是内部故障。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.