Deploying CherryPy (daemon)

cherrypy, deployment, python

Solution

There is a Daemonizer plugin for CherryPy included by default which is useful for getting it to start but by far the easiest way for simple cases is to use the cherryd script:

> cherryd -h
Usage: cherryd [options]

Options:
  -h, --help            show this help message and exit
  -c CONFIG, --config=CONFIG
                        specify config file(s)
  -d                    run the server as a daemon
  -e ENVIRONMENT, --environment=ENVIRONMENT
                        apply the given config environment
  -f                    start a fastcgi server instead of the default HTTP
                        server
  -s                    start a scgi server instead of the default HTTP server
  -i IMPORTS, --import=IMPORTS
                        specify modules to import
  -p PIDFILE, --pidfile=PIDFILE
                        store the process id in the given file

As far as an init.d script goes I think there are examples that can be Googled.

And the `cherryd` is found in your:

virtualenv/lib/python2.7/site-packages/cherrypy/cherryd

or in: https://bitbucket.org/cherrypy/cherrypy/src/default/cherrypy/cherryd

Problem

I've followed the basic CherryPy tutorial (http://www.cherrypy.org/wiki/CherryPyTutorial). One thing not discussed is deployment. How can I launch a CherryPy app as a daemon and "forget about it"? What happens if the server reboots? Is there a standard recipe? Maybe something that will create a service script (/etc/init.d/cherrypy...) Thanks!

Original source