高性能web服務(wù)器框架Tornado簡(jiǎn)單實(shí)現(xiàn)restful接口及開(kāi)發(fā)實(shí)例
有個(gè)朋友讓我搞搞tornado框架,說(shuō)實(shí)話,這個(gè)框架我用的不多。。。
我就把自己的一些個(gè)運(yùn)維研發(fā)相關(guān)的例子,分享給大家。

怎么安裝tornado,我想大家都懂。
pip install tornado
再來(lái)說(shuō)說(shuō)他的一些個(gè)模塊,官網(wǎng)有介紹的。我這里再啰嗦的復(fù)讀機(jī)一下,里面摻夾我的理解。
主要模塊
web - FriendFeed 使用的基礎(chǔ) Web 框架,包含了 Tornado 的大多數(shù)重要的功能,反正你進(jìn)入就對(duì)了。
escape - XHTML, JSON, URL 的編碼/解碼方法
database - 對(duì) MySQLdb 的簡(jiǎn)單封裝,使其更容易使用,是個(gè)orm的東西。
template - 基于 Python 的 web 模板系統(tǒng),類似jinja2
httpclient - 非阻塞式 HTTP 客戶端,它被設(shè)計(jì)用來(lái)和 web 及 httpserver 協(xié)同工作,這個(gè)類似加個(gè)urllib2
auth - 第三方認(rèn)證的實(shí)現(xiàn)(包括 Google OpenID/OAuth、Facebook Platform、Yahoo BBAuth、FriendFeed OpenID/OAuth、Twitter OAuth)
locale - 針對(duì)本地化和翻譯的支持
options - 命令行和配置文件解析工具,針對(duì)服務(wù)器環(huán)境做了優(yōu)化,接受參數(shù)的
底層模塊
httpserver - 服務(wù)于 web 模塊的一個(gè)非常簡(jiǎn)單的 HTTP 服務(wù)器的實(shí)現(xiàn)
iostream - 對(duì)非阻塞式的 socket 的簡(jiǎn)單封裝,以方便常用讀寫操作
ioloop - 核心的 I/O 循環(huán)
再來(lái)說(shuō)說(shuō)tornado接受請(qǐng)求的方式:
關(guān)于get的方式
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("You requested the main page")
class niubi(tornado.web.RequestHandler):
def get(self, story_id):
self.write("xiaorui.cc niubi'id is " + story_id)
application = tornado.web.Application([
(r"/", MainHandler),
(r"/niubi/([0-9]+)", niubi),
])
這樣我們?cè)L問(wèn) /niubi/123123123 就會(huì)走niubi這個(gè)類,里面的get參數(shù)。
關(guān)于post的方式
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('<html><body><form action="/" method="post">'
'<input type="text" name="message">'
'<input type="submit" value="Submit">'
'</form></body></html>')
def post(self):
self.set_header("Content-Type", "text/plain")
self.write("xiaorui.cc and " + self.get_argument("message"))
在tornado里面,一般get和post都在一個(gè)訪問(wèn)路由里面的,只是按照不同method來(lái)區(qū)分相應(yīng)的。
扯淡的完了,大家測(cè)試下get和post。
import tornado.ioloop
import tornado.web
import json
class hello(tornado.web.RequestHandler):
def get(self):
self.write('Hello,xiaorui.cc')
class add(tornado.web.RequestHandler):
def post(self):
res = Add(json.loads(self.request.body))
self.write(json.dumps(res))
def Add(input):
sum = input['num1'] + input['num2']
result = {}
result['sum'] = sum
return result
application = tornado.web.Application([
(r"/", hello),
(r"/add", add),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
#大家可以寫個(gè)form測(cè)試,也可以用curl -d測(cè)試
- Python Web服務(wù)器Tornado使用小結(jié)
- Python Web框架Tornado運(yùn)行和部署
- Tornado Web服務(wù)器多進(jìn)程啟動(dòng)的2個(gè)方法
- python常用web框架簡(jiǎn)單性能測(cè)試結(jié)果分享(包含django、flask、bottle、tornado)
- 使用Python的Tornado框架實(shí)現(xiàn)一個(gè)Web端圖書展示頁(yè)面
- 使用Python的Tornado框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的WebQQ機(jī)器人
- Web服務(wù)器框架 Tornado簡(jiǎn)介
- Python tornado隊(duì)列示例-一個(gè)并發(fā)web爬蟲(chóng)代碼分享
- Tornado Web Server框架編寫簡(jiǎn)易Python服務(wù)器
- Python Tornado框架輕松寫一個(gè)Web應(yīng)用的全過(guò)程
相關(guān)文章
五個(gè)方便好用的Python自動(dòng)化辦公腳本的實(shí)現(xiàn)
在沒(méi)有人工干預(yù)的情況下,機(jī)器可以自己完成各項(xiàng)任務(wù),這大大提升了工作效率。Python因?yàn)檎Z(yǔ)法簡(jiǎn)潔易懂,而且有豐富的第三方工具庫(kù),所以非常適合編寫自動(dòng)化腳本,本文就為大家?guī)?lái)了五個(gè)這樣的腳本,需要的可以參考一下2022-01-01
tensorflow實(shí)現(xiàn)將ckpt轉(zhuǎn)pb文件的方法
這篇文章主要介紹了tensorflow實(shí)現(xiàn)將ckpt轉(zhuǎn)pb文件的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
python3+PyQt5 自定義窗口部件--使用窗口部件樣式表的方法
今天小編就為大家分享一篇python3+PyQt5 自定義窗口部件--使用窗口部件樣式表的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python對(duì)站點(diǎn)數(shù)據(jù)做EOF且做插值繪制填色圖
這篇文章主要介紹了python對(duì)站點(diǎn)數(shù)據(jù)做EOF且做插值繪制填色圖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,,需要的小伙伴可以參考一下2022-09-09
Python?pygame項(xiàng)目實(shí)戰(zhàn)監(jiān)聽(tīng)退出事件
這篇文章主要介紹了Python?pygame項(xiàng)目實(shí)戰(zhàn)監(jiān)聽(tīng)退出事件,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
Django DRF APIView源碼運(yùn)行流程詳解
這篇文章主要介紹了Django DRF APIView源碼運(yùn)行流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

