【发布时间】:2013-02-25 18:07:26
【问题描述】:
使用代码 I found here 实现一个简单的守护程序,我想知道是否有任何方法可以让守护程序在停止之前执行操作。 这个想法是,在我的脚本中,我正在使用与外部设备的串行连接,并且我想在关闭守护程序之前彻底关闭它。
在 App() 类的 init 循环中,我正在做所有的准备工作和初步设置。 然后,run 函数负责启动串行连接,丢弃前几个值并启动主循环(它只是从串行连接中检索值,并将它们保存到外部服务器)。
现在,我想做的是在退出前添加一些操作,例如关闭串行连接,并获取发送到日志文件的数据的一些摘要。
有没有简单的方法可以做到这一点? (或者甚至是一个困难的问题)。
为了记录,我还考虑过使用 this way 创建一个守护程序,这可能是一种更简单的方法来做我想做的事情。
这是我的代码现在的样子:
#standard libraries from python
import logging, sys, time
#3rd party lib
import serial, requests
from daemon import runner
class App():
def __init__(self):
#some initialize also including the ones from the example
serialport = '/dev/ttyACM0'
def run(self):
#Serial start
ser = serial.Serial()
ser.port = serialport
ser.open()
#First values discarded
for i in range(30):
ser.readline()[:-1]
#Yes, that's ugly!
i = 1
#Main loop
while True:
# Serial retrieve
values = ser.readline()
r = requests.get(url, params=values)
logger.info("%s values sent", str(i))
values = ''
i += 1
time.sleep(3)
app = App()
#daemon starting stuff from example
感谢您的帮助!
【问题讨论】:
-
这有点取决于您退出程序的方式。
While true永无止境。
标签: python daemon python-daemon start-stop-daemon