最近學習 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"
)