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伺服器。它在處理嚴峻的網路流量時表現得足夠 強健,但卻在建立和編寫時有著足夠的輕量級,並能夠被用在大量的應用和工具中。此外,它還擁有處理安全性 ...