Question

I have written a simple twisted server -

from twisted.internet import reactor
from twisted.internet import protocol
from twisted.web import server, resource
from twisted.internet import reactor

class Index(resource.Resource):
    isLeaf = True
    def render_GET(self, request):
        args = request.args
        print 'Args: %s' %(repr(args))

print 'Serving on PORT: 8090'
site = server.Site(Index())
reactor.listenTCP(8090, site)
reactor.run()

This runs fine on 127.0.0.1:8090. Note this this runs in terminal (foreground), when I make the process run in background using nohup & ctrl+Z. the server does not respond to requests. What should I do to daemonize this twisted server

Was it helpful?

Solution

As nmichael and Rakis already mentioned, after "ctrl+z" type "bg" to resume suspended process as a background job.

To run it directly as background job, type

python myserver.py &

To run it directly as background job that won't stop when you logout, type

nohup python myserver.py &

Also note that nohup, is not true deamonization. See the differences here: What's the difference between nohup and a daemon?

If you really want to deamonize your Twisted server, the best option is to use twistd as Mark Loeser answered.

OTHER TIPS

I'd recommend looking into twistd. That way you don't have to worry about handling any of the start up, pid file management, etc. The documentation on their site is quite good: http://twistedmatrix.com/documents/current/core/howto/basics.html. Also check http://twistedmatrix.com/documents/current/core/howto/tap.html for how to implement the application file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top