Я пытаюсь сделать daemon в python, и я столкнулся с пакетом python-daemon. Интересная вещь об этом является то, что наиболее распространенным способом я видел раньше даже не то, что documentation, что очень редко, говорит вам, чтобы сделатьКак вы используете python-daemon так, как это диктует документация?
import os
import grp
import signal
import daemon
import lockfile
from spam import (
initial_program_setup,
do_main_program,
program_cleanup,
reload_program_config,
)
context = daemon.DaemonContext(
working_directory='/var/lib/foo',
umask=0o002,
pidfile=lockfile.FileLock('/var/run/spam.pid'),
)
context.signal_map = {
signal.SIGTERM: program_cleanup,
signal.SIGHUP: 'terminate',
signal.SIGUSR1: reload_program_config,
}
mail_gid = grp.getgrnam('mail').gr_gid
context.gid = mail_gid
important_file = open('spam.data', 'w')
interesting_file = open('eggs.data', 'w')
context.files_preserve = [important_file, interesting_file]
initial_program_setup()
with context:
do_main_program()
Вместо этого, люди используют это так:
#!/usr/bin/python
import time
from daemon import runner
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = '/dev/tty'
self.stderr_path = '/dev/tty'
self.pidfile_path = '/tmp/foo.pid'
self.pidfile_timeout = 5
def run(self):
while True:
print("Howdy! Gig'em! Whoop!")
time.sleep(10)
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
Примеры here и в этой теме How do you create a daemon in Python?
так может кто-нибудь сказать мне, как предполагается, чтобы пакет был использован по назначению? Найдены 0 примеров, которые используют его так, как указано в документации.
Я обновил его до более сложного примера только для вас, но это та же концепция в конце дня. У вас есть ответ, как правильно его использовать? – m0meni
Это просто неправда. У меня установлена версия 2.0.5, и она находится здесь: '/ usr/local/lib/python2.7/dist-packages/daemon/runner.py' – m0meni
Точно, я рассматриваю вопрос с 2009 года, и я смущен, поэтому я сделал это. Документация мне не совсем понятна. Вы, похоже, хорошо разбираетесь в этой теме, не могли бы вы привести пример того, как реально использовать пакет, поскольку он предназначен для использования? – m0meni