如何创建在后台运行并可以干净地停止的Python脚本?

时间:2012-11-20 17:58:20

标签: python loops daemon shutdown

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

scriptname stop

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

目前它在终端的前台运行,并且不能通过键盘中断停止,因此杀死它的唯一方法是关闭终端或杀死python。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

使用supervisord。存在管理进程,并提供命令接口来启动和停止它们。

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

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

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

答案 1 :(得分:0)

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

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

关闭该脚本:
转到任务管理器,单击处理选项卡,注意 python 结束任务

如果您需要更多信息我准备提供给您...
我不确定Linux或Ubuntu 感谢。