from twisted.internet import reactor
from twisted.internet.task import deferLater
from twisted.web.resource import Resource
from twisted.web.server import Site, NOT_DONE_YET
import time
class BusyPage(Resource):
isLeaf = True
def _delayedRender(self, request):
request.write(b"Finally done, at %s" % time.asctime().encode('utf-8'))
request.finish()
def render_GET(self, request):
d = deferLater(reactor, 5, lambda: request)
d.addCallback(self._delayedRender)
return NOT_DONE_YET # returns NOT_DONE_YET immediately,freeing up the web server to process other requests.
factory = Site(BusyPage())
reactor.listenTCP(8000, factory)
reactor.run()