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()

但是当我启动程序并访问 url localhost:8888/ 时,它没有返回任何内容。是我的系统不符合要求吗?我的 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 回答