summaryrefslogtreecommitdiffstats
path: root/external_libs/python/python-daemon-2.0.5/doc/FAQ
diff options
context:
space:
mode:
Diffstat (limited to 'external_libs/python/python-daemon-2.0.5/doc/FAQ')
-rw-r--r--external_libs/python/python-daemon-2.0.5/doc/FAQ156
1 files changed, 0 insertions, 156 deletions
diff --git a/external_libs/python/python-daemon-2.0.5/doc/FAQ b/external_libs/python/python-daemon-2.0.5/doc/FAQ
deleted file mode 100644
index 1fcc4658..00000000
--- a/external_libs/python/python-daemon-2.0.5/doc/FAQ
+++ /dev/null
@@ -1,156 +0,0 @@
-‘python-daemon’ Frequently Asked Questions
-##########################################
-
-:Author: Ben Finney <ben+python@benfinney.id.au>
-:Updated: 2015-01-10
-
-.. contents::
-..
- 1 General
- 1.1 What is the purpose of the ‘python-daemon’ library?
- 1.2 How can I run a service communicating with a separate daemon process?
- 2 Security
- 2.1 Why is the umask set to 0 by default?
- 3 File descriptors
- 3.1 Why does the output stop after opening the daemon context?
- 3.2 How can I preserve a ‘logging’ handler's file descriptor?
-
-General
-=======
-
-What is the purpose of the ‘python-daemon’ library?
----------------------------------------------------
-
-The ‘python-daemon’ library has a deliberately narrow focus: that of
-being a reference implementation for `PEP 3143`_, “Standard daemon
-process library”.
-
-.. _`PEP 3143`: http://www.python.org/dev/peps/pep-3143
-
-How can I run a service communicating with a separate daemon process?
----------------------------------------------------------------------
-
-As specified in `PEP 3143`_, the ‘python-daemon’ library is
-specifically focussed on the goal of having the *current running
-program* become a well-behaved Unix daemon process. This leaves open
-the question of how this program is started, or about multiple
-programs interacting. As detailed in PEP 3143:
-
- A daemon is not a service
-
- There is a related concept in many systems, called a “service”. A
- service differs from the model in this PEP, in that rather than
- having the *current* program continue to run as a daemon process,
- a service starts an *additional* process to run in the background,
- and the current process communicates with that additional process
- via some defined channels.
-
- The Unix-style daemon model in this PEP can be used, among other
- things, to implement the background-process part of a service; but
- this PEP does not address the other aspects of setting up and
- managing a service.
-
-A possible starting point for such a “service” model of execution is
-in a `message from 2009-01-30`_ to the ``python-ideas`` forum.
-
-.. _`message from 2009-01-30`: http://mail.python.org/pipermail/python-ideas/2009-January/002606.html
-
-
-Security
-========
-
-Why is the umask set to 0 by default?
--------------------------------------
-
-A daemon should not rely on the parent process's umask value, which is
-beyond its control and may prevent creating a file with the required
-access mode. So when the daemon context opens, the umask is set to an
-explicit known value.
-
-If the conventional value of 0 is too open, consider setting a value
-such as 0o022, 0o027, 0o077, or another specific value. Otherwise,
-ensure the daemon creates every file with an explicit access mode for
-the purpose.
-
-
-File descriptors
-================
-
-Why does the output stop after opening the daemon context?
-----------------------------------------------------------
-
-The specified behaviour in `PEP 3143`_ includes the requirement to
-detach the process from the controlling terminal (to allow the process
-to continue to run as a daemon), and to close all file descriptors not
-known to be safe once detached (to ensure any files that continue to
-be used are under the control of the daemon process).
-
-If you want the process to generate output via the system streams
-‘sys.stdout’ and ‘sys.stderr’, set the ‘DaemonContext’'s ‘stdout’
-and/or ‘stderr’ options to a file-like object (e.g. the ‘stream’
-attribute of a ‘logging.Handler’ instance). If these objects have file
-descriptors, they will be preserved when the daemon context opens.
-
-How can I preserve a ‘logging’ handler's file descriptor?
----------------------------------------------------------
-
-The ‘DaemonContext.open’ method conforms to `PEP 3143`_ by closing all
-open file descriptors, but excluding those files specified in the
-‘files_preserve’ option. This option is a list of files or file
-descriptors.
-
-The Python standard library ‘logging’ module provides log handlers
-that write to streams, including to files via the ‘StreamHandler’
-class and its sub-classes. The documentation (both the online `logging
-module documentation`_ and the docstrings for the code) makes no
-mention of a way to get at the stream associated with a handler
-object.
-
-However, looking at the source code for ‘StreamHandler’, in Python 2.5
-as ``/usr/lib/python2.5/logging/__init__.py``, shows a ‘stream’
-attribute that is bound to the stream object. The attribute is not
-marked private (i.e. it is not named with a leading underscore), so we
-can presume it is part of the public API.
-
-That attribute can then be used to specify that a logging handler's
-file descriptor should, when the ‘DaemonContext’ opens, be excluded
-from closure::
-
- import logging
- import daemon
-
- # any subclass of StreamHandler should provide the ‘stream’ attribute.
- lh = logging.handlers.TimedRotatingFileHandler(
- "/var/log/foo.log",
- # …
- )
-
- # … do some logging and other activity …
-
- daemon_context = daemon.DaemonContext()
- daemon_context.files_preserve = [lh.stream]
-
- daemon_context.open()
-
- # … continue as a daemon process …
-
-.. _`logging module documentation`: http://docs.python.org/library/logging
-
-
-..
- This is free software: you may copy, modify, and/or distribute this work
- under the terms of the Apache License version 2.0 as published by the
- Apache Software Foundation.
- No warranty expressed or implied. See the file ‘LICENSE.ASF-2’ for details.
-
-..
- Local variables:
- coding: utf-8
- mode: text
- mode: rst
- time-stamp-format: "%:y-%02m-%02d"
- time-stamp-start: "^:Updated:[ ]+"
- time-stamp-end: "$"
- time-stamp-line-limit: 20
- End:
- vim: fileencoding=utf-8 filetype=rst :