如何使 Python 脚本(作为服务安装)在注销后仍然存在?
Posted
技术标签:
【中文标题】如何使 Python 脚本(作为服务安装)在注销后仍然存在?【英文标题】:How do I make a Python script (installed as a service) survive a logout? 【发布时间】:2011-04-16 13:04:40 【问题描述】:我按照answer 中的说明编写了一个用作服务的 Python 脚本。我将循环代码放在def main()
。
我使用python my_script.py install
安装了该服务。我可以在 Windows XP 中通过services.msc
启动和停止服务。
这是一个日志程序,旨在在 Windows 运行时写入日志。它不应该关心谁或是否有人登录或注销。我的问题是当我注销时服务会停止。如何让它在注销后仍然存在?
【问题讨论】:
【参考方案1】:当用户关闭控制台、注销或关闭系统时,系统会生成 CTRL_CLOSE_EVENT、CTRL_LOGOFF_EVENT 和 CTRL_SHUTDOWN_EVENT 信号,以便进程在终止前有机会进行清理。为确保您将服务与所有这些分离,您将需要使用控制处理程序来设置它:
win32api.SetConsoleCtrlHandler(lambda x: True, True)
查看:http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx
刚刚查看了一个食谱,可以很好地说明这一点。
http://code.activestate.com/recipes/551780-win-services-helper/【讨论】:
这条线应该在哪里出现?我是否正确地说它应该在这个code snippet 中的__init__
类中?
@Kit :请参阅上面我编辑的答案。我刚刚看到有一个 python 食谱可以帮助你完成这一切。以上是关于如何使 Python 脚本(作为服务安装)在注销后仍然存在?的主要内容,如果未能解决你的问题,请参考以下文章
其中 jsonwebtoken 存储在服务器 nodejs 中。用户注销后如何使 JWT 过期