【问题标题】:How can I create a Python script that runs in the background and can be stopped cleanly?如何创建一个在后台运行并且可以干净地停止的 Python 脚本?
【发布时间】:2012-11-20 17:58:20
【问题描述】:

我有一个不断运行的 python 脚本(它有一个无限循环),但我希望它在运行时仍然能够接受输入。它会在后台运行,然后我可以随时输入

scriptname stop

并停止它(或类似的东西)。这样它就可以调用关闭方法来保存信息并退出。

目前它在终端的前台运行,不能被键盘中断停止,所以杀死它的唯一方法是关闭终端或杀死python。

我该怎么做?

【问题讨论】:

    标签: python loops daemon shutdown


    【解决方案1】:

    使用supervisord。它的存在是为了管理进程,并提供一个命令界面来启动和停止它们。

    当主管杀死一个进程时,它会发送 SIGTERM(或您选择的任何其他信号)。因此,要彻底关闭,您需要处理该信号。

    请参阅有关如何处理 SIGTERM 的问题:Python - Trap all signals

    进程仍然可以在自己的管道上侦听输入,并以这种方式发送输出。

    【讨论】:

    • 有什么方法可以使用 supervisord 将信息发送到脚本中?比如为了触发关机方法?我想确保它在关闭时不会在做某事。
    【解决方案2】:

    如果你在 Windows 中,那么你就在正确的位置......

    只需将您的文件:script.py 重命名为 script.pyw 并正常使用即可。
    您的脚本将在后台运行。

    要关闭该脚本:
    进入Task Manager,点击Process Tab,注意pythonEnd Task

    如果您需要更多信息,我随时准备为您提供...
    我不确定 Linux 或 Ubuntu。
    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2013-05-14
      • 2011-11-25
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多