diff options
Diffstat (limited to 'vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst')
-rw-r--r-- | vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst new file mode 100644 index 0000000..a5296ce --- /dev/null +++ b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst @@ -0,0 +1,47 @@ +*************** +Run as a daemon +*************** + +CherryPy allows you to easily decouple the current process from the parent +environment, using the traditional double-fork:: + + from cherrypy.process.plugins import Daemonizer + d = Daemonizer(cherrypy.engine) + d.subscribe() + +.. note:: + + This :ref:`Engine Plugin<plugins>` is only available on + Unix and similar systems which provide fork(). + +If a startup error occurs in the forked children, the return code from the +parent process will still be 0. Errors in the initial daemonizing process still +return proper exit codes, but errors after the fork won't. Therefore, if you use +this plugin to daemonize, don't use the return code as an accurate indicator of +whether the process fully started. In fact, that return code only indicates if +the process successfully finished the first fork. + +The plugin takes optional arguments to redirect standard streams: ``stdin``, +``stdout``, and ``stderr``. By default, these are all redirected to +:file:`/dev/null`, but you're free to send them to log files or elsewhere. + +.. warning:: + + You should be careful to not start any threads before this plugin runs. + The plugin will warn if you do so, because "...the effects of calling functions + that require certain resources between the call to fork() and the call to an + exec function are undefined". (`ref <http://www.opengroup.org/onlinepubs/000095399/functions/fork.html>`_). + It is for this reason that the Server plugin runs at priority 75 (it starts + worker threads), which is later than the default priority of 65 for the + Daemonizer. + + +.. currentmodule:: cherrypy.process.plugins + +Classes +======= + +.. autoclass:: Daemonizer + :members: + :show-inheritance: + |