tornado學習筆記

2022-06-21 00:48:12 字數 2974 閱讀 8147

tornado是乙個python到開源web框架,它比django要輕量級到多,也沒有什麼元件,只有運用到對應到業務場景下我才使用這個框架,它是單程序單執行緒到非同步非阻塞模型,適用與長連線長輪巡,高併發,非同步非阻塞

安裝:

pip install tornado

view層

'''

@file : views_service.py

@date : 2020/8/31

@desc :

'''import

threading

import

time

import

tornado.web

import

tornado

import

tornado.ioloop

import

tornado.web

import

tornado.gen

from tornado.concurrent import

run_on_executor

from concurrent.futures import

threadpoolexecutor

from uuid import

uuid4

import

random

all_count =0

big_list ={}

class

servicehandler(tornado.web.requesthandler):

executor = threadpoolexecutor(20) #

最大執行緒數 必須定義乙個executor的屬性,然後run_on_executor裝飾器才會有用。

@run_on_executor

#在這個方法下,執行緒內執行;query函式被run_on_executor包裹(語法糖),將該函式的執行傳遞給執行緒池executor的執行緒執行,優化了處理耗時性任務,以致達到不阻塞主線程的效果。

deftime_demo(self, tid, uid):

time.sleep(tid)

threading_id =threading.current_thread().ident

big_list[uid] =threading_id

@tornado.gen.coroutine

#非同步、協程處理;增加併發量

defpost(self):

global

all_count

all_count += 1uid =str(uuid4())

yield self.time_demo(random.randint(1, 100), uid) #

模擬業務處理,使用yield來實現非同步阻塞請求

r =

self.write(tornado.escape.json_encode(r))

#寫入返回資訊寫入response

self.finish() #

結束服務

defget(self):

return self.post()

__init__.py

'''

@file : __init__.py

@date : 2020/8/31

@desc :

'''import tornado.web #

web框架

http服務

import tornado.ioloop #

輸入輸出事件迴圈

import tornado.options #

配置工具

from tornado.options import

options, define

configs

urls

define(

'port

', default=8000, type=int, help='

執行埠')

#自定義應用

class

def__init__(self): #

重寫構造方法

#指定路由規則

handlers =urls

#指定配置檔案

settings =configs

__init__(handlers=handlers, **settings)

#定義服務

defcreate_server():

#允許在命令列中啟動

#tornado.options.parse_command_line()

#建立http服務

#注意要例項化

)

#繫結監聽的埠

#啟動輸入輸出事件迴圈

tornado.ioloop.ioloop.instance().start()

'''

@file : manage.py

@date : 2020/8/31

@desc :

'''create_server

if__name__ == '

__main__':

create_server()

路由indexhandler as index

servicehandler as service

#配置路由和配置到對映規則

urls =[

(r"/index

", index),

(r"/demo

", service),

]

Tornado學習筆記 四

一 tornado的語言國際化方法 tornado做國際化折騰了一下下,tornado這部分的官方文件太poor了。所以自己記錄一下如何用tornado結合gettext做國際化。第一步,在專案路徑下建立.locales zh cn lc messages資料夾。第二步,使用xgettext或poe...

Tornado學習筆記 四

一 tornado的語言國際化方法 tornado做國際化折騰了一下下,tornado這部分的官方文件太poor了。所以自己記錄一下如何用tornado結合gettext做國際化。第一步,在專案路徑下建立.locales zh cn lc messages資料夾。第二步,使用xgettext或poe...

Tornado學習筆記(1)

參考書籍 introduction to tornado 1.1 tornado是什麼?tornado是使用python編寫的乙個強大的 可擴充套件的web伺服器。它在處理嚴峻的網路流量時表現得足夠 強健,但卻在建立和編寫時有著足夠的輕量級,並能夠被用在大量的應用和工具中。此外,它還擁有處理安全性 ...