LINUX.ORG.RU

[python] Управление демоном

 


0

0

Есть демон на питоне, в цикле считает всякую ересь, типа

def counter()
   ...
   while 1:
      count = count + 1
      time.sleep(600)

Надо, чтобы по команде из вне, например запуск его же но с параметрами, вываливал значение счетчиков в stdout.

Вот как-то так, а я что-то торможу, как это сделать.

★★★★★

Попробуй D-Bus. В питоне вроде бы даже в стандартной библиотеке он есть. Ну или можно через сокеты передать команду.

Rudcozt
()

fluorite

Нет, без внешних библиотек, просто 3 функции:
- startstop()
- сам обработчик с бесконечным циклом counter()
- и deamonize() с двумя os.fork()

balodja

Да, именно так, пробовал сокеты - не понравилось, с d-bus разобраться на ночь глядя не смог. Именованные пайпы... Сейчас остальное по статье посмотрю.

Сложность в том, что мне как имеющему к разработке отношение опосредованное, не хватает примеров конкретных реализаций на том же питоне.

vvn_black ★★★★★
() автор топика
Ответ на: комментарий от vvn_black
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import signal
def SigUSR1Handler(signum, frame):
    print "Reacting on SIGUSR1 (signal 10)"
    return

signal.signal( signal.SIGUSR1, SigUSR1Handler )

count = 1
while(1):
    count = count + 1
    time.sleep(6)

$ ./test.py &
[1] 15108
$ kill -10 15108
$ Reacting on SIGUSR1 (signal 10)

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Да, именно так сейчас и работает.

vvn_black ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

Тем, что код по организации межпроцессного обмена сложнее, чем основной. По-быстрому ограничился сигналами. Будет время, перепишу обмен через сокеты, потому что в планах передача информации демону. А может и вообще, сделаю на C реализацию. Было б время.

vvn_black ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.