3

A nontrivial cherrypy server example

 2 years ago
source link: https://peter.bourgon.org/blog/2009/07/15/a-nontrivial-cherrypy-server-example.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

A nontrivial cherrypy server example

2009 07 15

cherrypy is a pretty good lightweight HTTP server for Python, and to their credit they make it really easy to get started in a simple, single-purpose app. But if you ever want to add a cherrypy server into an existing program, or manage the server in a more object-oriented (or at least non-global) way, it’s a little tricky to figure out how. The quickstart() method is not so useful here, and they like to emphasize that in the documentation.

So, here is my implementation of a modular cherrypy (3.1+) “server” object that may be independently started/stopped.

from __future__ import with_statement
import cherrypy
import threading

class HTTPServer(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.sync = threading.Condition()

    def run(self):
        with self.sync:
            cherrypy.server.socket_port = 8080
            #cherrypy.server.socket_host = optional hostname
            cherrypy.tree.mount(MySiteClass(), "/", None)
            cherrypy.engine.start()
        cherrypy.engine.block()

    def stop(self):
        with self.sync:
            cherrypy.engine.exit()
            cherrypy.server.stop()

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK