How do I keep a python HTTP Server up forever?

SuperFamousGuy picture SuperFamousGuy · Sep 9, 2011 · Viewed 7.3k times · Source

I wrote a simple HTTP server in python to manage a database hosted on a server via a web UI. It is perfectly functional and works as intended. However it has one huge problem, it won't stay put. It will work for an hour or so, but if left unused for long periods of time when returning to use it I have to re-initialize it every time. Right now the method I use to make it serve is:

def main():
    global db
    db = DB("localhost")
    server = HTTPServer(('', 8080), MyHandler)
    print 'started httpserver...'
    server.serve_forever()

if __name__ == '__main__':
    main()

I run this in the background on a linux server so I would run a command like sudo python webserver.py & to detach it, but as I mentioned previously after a while it quits. Any advice is appreciated cause as it stands I don't see why it shuts down.

Answer

André Caron picture André Caron · Sep 9, 2011

You can write a UNIX daemon in Python using the python-daemon package, or a Windows service using the pywin32.

Unfortunately, I know of no "portable" solution to writing daemon / service processes (in Python, or otherwise).