對于Web服務(wù)器來說,性能是非常重要的因素之一,特別是高并發(fā)的場景下,C10K—— Concurrently handling ten thousandconnections,即并發(fā)10000個連接。這個對單臺Web服務(wù)器來說,很難達到1萬并發(fā),通常都需要多臺進行集群,才能解決并發(fā)量的問題,但這個會導(dǎo)致高昂的成本。
本文介紹一個基于Python的高性能開源Web服務(wù)器:Tornado,Tornado全稱Tornado Web Server,是一個用Python語言寫成的Web服務(wù)器兼Web應(yīng)用框架,通過使用非阻塞網(wǎng)絡(luò)I/O,Tornado可以擴展到數(shù)萬個開放連接,使其非常適合 long polling , WebSockets 以及其他需要與每個用戶建立長期連接的應(yīng)用程序。由FriendFeed公司在自己的網(wǎng)站FriendFeed中使用,被Facebook收購以后,該框架在2009年9月以開源軟件形式開放給大眾。此外,它還擁有處理安全性、用戶驗證、社交網(wǎng)絡(luò)以及與外部服務(wù)(如數(shù)據(jù)庫和網(wǎng)站API)進行異步交互的工具。
平臺 :Tornado是為類Unix平臺設(shè)計的,在系統(tǒng)支持方面具有最佳的性能和可擴展性。 epoll (Linux) kqueue (BSD/MACOS),或 /dev/poll (索拉里斯)。
Tornado也將在Windows上運行,盡管該配置沒有正式支持或推薦用于生產(chǎn)。Windows上缺少一些功能(包括多進程模式),并且擴展性有限(即使Tornado是建立在 asyncio 支持Windows的Tornado不使用Windows上可擴展網(wǎng)絡(luò)所需的API)。Tornado官方文檔網(wǎng)址:https://www.tornadoweb.org/en/stable/,源代碼網(wǎng)址:https://github.com/tornadoweb/tornado,它的最新穩(wěn)定版本是6.1。
Tornado官方文檔
Tornado下載地址
Tornado主要有四個部分:
Tornado安裝命令:pip install tornado,如下圖:
安裝Tornado
Tornado安裝成功
安裝Superset如果沒有更改數(shù)據(jù)庫,默認安裝的SQLite數(shù)據(jù)庫,該數(shù)據(jù)庫的位置為當前安裝用戶的目錄.superset下,比如C:\Users\user\.superset,如下圖:
superset數(shù)據(jù)庫位置
把此數(shù)據(jù)庫文件拷貝到D:\Programs\Python\Python38\Lib\site-packages目錄下,如下圖:
拷貝數(shù)據(jù)庫文件
編寫一個Tornado運行Superset入口的py文件:supersetserver.py,代碼如下:
import os
from superset.initialization import SupersetAppInitializer
from typing import Any, Callable, Dict, TYPE_CHECKING
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
from superset import create_app
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
os.environ["SUPERSET_HOME"]="D:\Programs\Python\Python38\Lib\site-packages"
superset_app=create_app()
if __name__=='__main__':
http_server=HTTPServer(WSGIContainer(superset_app))
http_server.listen(8001)
print('run...')
IOLoop.current().start()
通過nssm封裝Windows服務(wù),創(chuàng)建Windows服務(wù):nssm.exe install "SupersetService" "D:\Programs\Python\Python38\python.exe" "D:\Programs\Python\Python38\Lib\site-packages\supersetserver.py",如下圖:
創(chuàng)建superset的windows服務(wù)
啟動windows服務(wù):nssm.exe start SupersetService,如下圖:
啟動superset的Windows服務(wù)
成功啟動superset的windows服務(wù)
輸入superset網(wǎng)址運行:http://127.0.0.1:8001/,成功登陸,如下圖:
成功登陸superset
為了達到最佳性能和穩(wěn)定性,生產(chǎn)環(huán)境還是建議部署到Linux中,不建議在Windows下部署。
如果您喜歡這篇文章,請關(guān)注我,收藏、點贊、評論和轉(zhuǎn)發(fā),會讓更多需要幫助的人看到這篇文章。舉手之勞,善莫大焉!
Tornado是使用Python開發(fā)的Web框架和異步網(wǎng)絡(luò)庫,最早由Friendfeed開發(fā),現(xiàn)被Facebook收購并開放源代碼。通過使用非阻塞IO,Tornado可以處理數(shù)以萬計的開放連接,是long polling、WebSockets和其他需要為用戶維護長連接高性能應(yīng)用的理想選擇
tornado基礎(chǔ)+項目實戰(zhàn)開發(fā)
一、初識tornado
1.學前須知
2.tornado簡介
二、準備tornado開發(fā)環(huán)境
3.windows搭建開發(fā)環(huán)境
4.linux搭建開發(fā)環(huán)境
5.mac搭建開發(fā)環(huán)境
三、tornado基礎(chǔ)知識
6.第一個程序
7.URL路由映射
8.錯誤處理
9.重定向
10.請求與響應(yīng)
11.單文件多文件上傳
12.同步與異步
13.協(xié)程與并行
14.多進程服務(wù)器
15.模板
16.UI模塊
17.認證和安全
18.ajax通信
19.websocket實時聊天程序
20.結(jié)合sqlalchemy操作mysql
四.文章發(fā)布系統(tǒng)項目實戰(zhàn)
21.項目結(jié)構(gòu)
22.搭建前臺頁面
23.搭建后臺頁面
24.數(shù)據(jù)庫設(shè)計
25.后臺登錄
26-1.標簽編輯
26-2.標簽列表-分頁-搜索
26-3.標簽修改-刪除
27-1.文章編輯-ajax上傳圖片
27-2.文章列表-分頁-搜索-修改-刪除
28.前臺首頁
29.前臺搜索
30.前臺詳情-代碼優(yōu)化
31.服務(wù)器搭建
32.運行和部署
五、總結(jié)
33.課程總結(jié)
怪獸IT學院