如何使 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 脚本(作为服务安装)在注销后仍然存在?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Python 脚本作为服务运行?

其中 jsonwebtoken 存储在服务器 nodejs 中。用户注销后如何使 JWT 过期

如何通过命令行运行 php 脚本(并在注销后保持运行)

python 脚本模拟登录后注销操作,使用登录时的cookies,注销时仍提示未登录

从ssh注销后如何使程序继续运行? [复制]

如何在django中注销时获取用户