Search code examples
pythontwistedtwisted.webtwisted.clienttwisted.internet

Python Twisted Daemon


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


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.