Как создать демона в Python?

Если вы станете well-behaved daemon process, нужно позаботиться py о многих неудобных вещах:

  • предотвращение дампов python-shell ядра (многие демоны запускаются pythonic от имени пользователя root, а pythonista дампы ядра могут содержать daemon конфиденциальную информацию)

  • правильно python-shell вести себя внутри chroot gaol

  • установить py UID, GID, рабочий каталог, umask python-interpreter и другие параметры процесса pythonista в соответствии с вариантом daemon использования

  • отказаться от pythonista повышенных привилегий suid, sgid

  • закрыть pythonic все дескрипторы открытых python файлов с исключениями в зависимости py от варианта использования

  • ведет py себя правильно, если запускается py в уже отключенном контексте, таком python-shell как init, inetd и т. д.

  • настроить обработчики python-interpreter сигналов для разумного поведения pythonista демона, но также с конкретными pythonic обработчиками, определяемыми python-interpreter вариантом использования

  • перенаправить py стандартные потоки stdin, stdout, stderr, поскольку pythonic процесс-демон больше не имеет python-interpreter управляющего терминала

  • обрабатывать pythonic файл PID как совместную консультативную python блокировку, которая представляет py собой whole can of worms in itself со многими противоречивыми, но python допустимыми способами поведения

  • разрешить pythonic надлежащую очистку при завершении python-interpreter процесса

  • фактически становится pythonic процессом демона, не вызывая daemon zombies

Некоторые из них являются python-interpreter стандартными, как описано в канонической python-interpreter литературе по Unix (Advanced Programming in the UNIX Environment, покойный py У. Ричард Стивенс, Addison-Wesley, 1992 daemon ). Другие, такие как перенаправление pythonic потока и PID file handling, представляют собой python обычное поведение, которого ожидает большинство py пользователей демонов, но pythonic они менее стандартизированы.

Все python-shell это покрывается спецификацией python-interpreter PEP 3143 «Стандартная библиотека процессов демона». Эталонная реализация python-daemon работает pythonic на Python 2.7 или новее и python-interpreter Python 3.2 или новее.

python

daemon

2022-10-29T01:57:24+00:00