开头说明:
1.大部分是跟着一个教程敲的示例代码,使用了pycharm,添加了在敲的过程中遇到的一些问题,加在了代码的注释里.
2.经测试,在windows环境也可以正常运行,pycharm用户可以通过安装依赖来自动提醒
3.用来入门的版本比较低,现在已经升级到了4+的版本,可自行选择
linux安装
curl -L -O https://github.com/facebook/tornado/archive/v3.1.0.tar.gz
tar xvzf v3.1.0.tar.gz
cd tornado-3.1.0
python setup.py build
sudo python setup.py install
第一个例子
# coding=utf-8
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
# 如果去掉Hello,则必须通过url传递greeting参数,否则会400
greeting = self.get_argument("greeting", "Hello")
self.write(greeting + 'friendly user!')
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
self是指class实例本身,这个概念对于java是很好理解的.
如何部署多个RquestHandler
# coding=utf-8
import textwrap
import tornado.web
import tornado.options
import tornado.httpserver
import tornado.ioloop
#关于pycharm会错误的警告unused import的问题,引入了这个父包之后,就不警告了
import tornado
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class ReverseHandler(tornado.web.RequestHandler):
def get(self, input):
self.write(input[::-1])
class WrapHandler(tornado.web.RequestHandler):
def post(self):
text = self.get_argument('text')
width = self.get_argument('width', 40)
self.write(textwrap.fill(text, int(width)))
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(
handlers=[
(r"/reverse/(\w+)", ReverseHandler),
(r"/wrap", WrapHandler)
]
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()