Как я могу выполнять асинхронную обработку запросов в Twisted, как в Node.js?
Я написал пример с Twisted, но мое приложение все еще ждало ответа от долгой работы (я эмулирую это с помощью time.sleep).
Также я не понимаю, как я могу правильно использовать Reactor.callLater.
Это мой образец скрученного приложения.
from twisted.web import server
from twisted.web.resource import Resource
from twisted.internet import reactor
from twisted.internet.defer import Deferred
import time
class Hello(Resource):
def getChild(self, name, request):
if name == '':
return self
print name
return Resource.getChild(self, name, request)
def render_GET(self, req):
d = Deferred()
reactor.callLater(2, d.callback, None)
d.addCallback(lambda _: self.say_hi(req))
return server.NOT_DONE_YET
def say_hi(self, req):
req.setHeader("content-type", "text/html")
time.sleep(5)
req.write("hello!")
req.finish()
class Hello2(Resource):
isLeaf = True
def render_GET(self, req):
req.setHeader("content-type", "text/html")
return "hello2!"
root = Hello()
root.putChild("2", Hello2())
reactor.listenTCP(8080, server.Site(root))
reactor.run()
Изменить: Теперь вопрос в том, как написать код синхронизации? Пожалуйста пример.