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()
編集: 質問は、同期コードの書き方です。例をください。