最近学习 Tornado ,个人底子较为薄弱,所以好多东西都是一点点的踩过来。
这是一个最基础的demo希望对别人有帮助,英语不好看不懂外文的文档,所以好多东西都是我一点点在网上查出来的。
server.py
# -*- coding:utf-8 -*-
import os
import redis
import torndb
import config
import tornado.web
import tornado.ioloop
import tornado.options
import tornado.httpserver
from tornado.options import options
from tornado.web import RequestHandler
tornado.options.define("port",type=int,default=8800,help="服务器端口")
"""Base基类"""
class BaseHandler(RequestHandler):
"""@property 装饰器 将db做为 BaseHandler 的属性调用"""
@property
def db(self):
return self.application.db
def set_default_headers(self):
#http请求头
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
self.set_header("Content-Type", "application/json; charset=UTF-8")
def post(self):
pass
def get(self):
pass
def options(self):
self.set_status(204)
self.finish()
"""创建一个Application类把数据库连接和redis绑定到Application里"""
class Application(tornado.web.Application):
def __init__(self,*args,**kwargs):
"""这个handlers也能剥离出去单写个文件"""
handlers = [
(r"/", IndexHandler)
]
tornado.web.Application.__init__(self,handlers,**config.settings)
self.db = torndb.Connection(**config.mysql_config)
self.redis = redis.StrictRedis(**config.redis_config)
class IndexHandler(BaseHandler):
"""这里继承BaseHandler 所以才能用self.db"""
def get(self):
data = self.db.query("select * from stus")
import json
datas = json.dumps(data)
self.write(datas)
def post(self):
jsons = {
"name":"hahaha",
"age":"45"
}
self.write(jsons)
def main():
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(options.port)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
print "The Server Run In: http://127.0.0.1:%d"%options.port
main()
config.py
# -*- coding:utf-8 -*-
import os
"""Application配置参数"""
settings = dict(
static_path = os.path.join(os.path.dirname(__file__), 'static'),
templates_path = os.path.join(os.path.dirname(__file__), 'templates'),
cookie_secret = "9bTzIuvlRtWWo9wpc4/6aFOL5Ub1uUFrs4x6bIHBqZc=",
xsrf_cookies = True,
debug = True,
)
"""MySQL配置参数"""
mysql_config = dict(
host = "127.0.0.1",
database = "test1",
user = "root",
password = "1113"
)
"""Redis配置参数"""
redis_config = dict(
host = "127.0.0.1",
port = "6379"
)