1

私はトルネードでepollを動作させようとしています

import tornado.ioloop
import tornado.web
from tornado.platform.epoll import EPollIOLoop
from tornado import web, gen

class MainHandler(tornado.web.RequestHandler):
    @web.asynchronous
    @gen.engine    
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    EPollIOLoop().start()

しかし、プログラムを起動して localhost:8888/ という URL にアクセスしても、何も返されませんでした。私のシステムが要件を満たしていなかったということですか? 私の Linux バージョンは Ubuntu 12.04.1 LTS でした。

4

1 に答える 1

3

を使用するだけtornado.ioloop.IOLoop.instance()です。プラットフォームに最適な IOLoop を選択します。

if __name__ == "__main__":
    application.listen(8888)
    ioloop = tornado.ioloop.IOLoop.instance()
    print ioloop # prints  <tornado.platform.epoll.EPollIOLoop object at ..>
    ioloop.start()

デコレータself.finish()を使用する場合は、次のように呼び出す必要があります。asynchronous

このデコレーターが指定されている場合、メソッドが返されたときに応答は終了しません。self.finish()を呼び出し て HTTP 要求を終了するのは、要求ハンドラー次第です。このデコレーターがない場合、get() または post() メソッドが戻ると、リクエストは自動的に終了します。

class MainHandler(tornado.web.RequestHandler):
    @web.asynchronous
    @gen.engine    
    def get(self):
        self.write("Hello, world")
        self.finish()
于 2013-08-24T13:42:20.047 に答える