如何像在 Node.js 中一样在 Twisted 中进行异步请求处理?
我用 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()
编辑:现在的问题是如何编写同步代码?请举例。