Как получить демон python для выполнения действия при остановке

Используя код I найденный здесь для реализации простого демона, Мне интересно, есть ли у меня какой-нибудь способ заставить демона выполнить действие непосредственно перед остановкой. Идея заключается в том, что в моем сценарии я использую последовательное подключение к внешнему устройству, и я хотел бы закрыть его до того, как выключить демона.

Во время цикла init класса App() я занимаюсь подготовкой и предварительной настройкой. Затем функция запуска заботится о запуске последовательного соединения, отбрасывая первые несколько значений и запуская основной цикл (который просто извлекает значение из последовательного соединения и сохраняет их на внешний сервер).

Теперь, что я хотел бы сделать, это добавить некоторые действия только перед выходом, например, закрыть последовательное соединение и получить небольшое резюме данных, отправленных в файл журнала.

Есть ли простой способ сделать это? (Или даже тяжелый для этого имеет значение).

Для записи я также подумал об использовании этого способа создания daemon, который может быть более простым способом делать то, что я пытаюсь сделать.

Вот как выглядит мой код:

#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

Спасибо за помощь!

2
nl ja de
Будет зависеть от того, как вы выходите из программы. Пока true никогда не заканчивается.
добавлено автор Gjordis, источник

1 ответы

Это описано в статье stdlib atexit . На более гранулированном уровне для кода, который выполняется до удаления объекта, вы можете реализовать метод del .

3
добавлено
Ну, это выглядит отлично! Я полностью забыл метод del ! Я сделаю снимок, чтобы посмотреть, что лучше всего подходит! Еще раз спасибо!
добавлено автор gromain, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community