Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

对于Web服务器来说,性能是非常重要的因素之一,特别是高并发的场景下,C10K—— Concurrently handling ten thousandconnections,即并发10000个连接。这个对单台Web服务器来说,很难达到1万并发,通常都需要多台进行集群,才能解决并发量的问题,但这个会导致高昂的成本。

本文介绍一个基于Python的高性能开源Web服务器:TornadoTornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接,使其非常适合 long polling , WebSockets 以及其他需要与每个用户建立长期连接的应用程序。由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后,该框架在2009年9月以开源软件形式开放给大众。此外,它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具。

平台 :Tornado是为类Unix平台设计的,在系统支持方面具有最佳的性能和可扩展性。 epoll (Linux) kqueue (BSD/MACOS),或 /dev/poll (索拉里斯)。

Tornado也将在Windows上运行,尽管该配置没有正式支持或推荐用于生产。Windows上缺少一些功能(包括多进程模式),并且扩展性有限(即使Tornado是建立在 asyncio 支持Windows的Tornado不使用Windows上可扩展网络所需的API)。Tornado官方文档网址:https://www.tornadoweb.org/en/stable/,源代码网址:https://github.com/tornadoweb/tornado,它的最新稳定版本是6.1。

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

Tornado官方文档

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

Tornado下载地址

Tornado主要有四个部分:

  1. Web 框架(包括 Request Handler,用于创建Web程序的基类,以及各种支持类)
  2. 实现 HTTP 客户端和服务器端 (HTTPServer 和 Async HTTPClient)
  3. 一个异步网络库 (IOLoop 和 IOStream)
  4. 一个协程库(tornado.gen) ,使得异步调用代码能够以更直接的方式书写,取代回调链接

Tornado安装命令:pip install tornado,如下图:

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

安装Tornado

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

Tornado安装成功

安装Superset如果没有更改数据库,默认安装的SQLite数据库,该数据库的位置为当前安装用户的目录.superset下,比如C:\Users\user\.superset,如下图:

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

superset数据库位置

把此数据库文件拷贝到D:\Programs\Python\Python38\Lib\site-packages目录下,如下图:

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

拷贝数据库文件

编写一个Tornado运行Superset入口的py文件:supersetserver.py,代码如下

import osfrom superset.initialization import SupersetAppInitializerfrom typing import Any, Callable, Dict, TYPE_CHECKINGfrom typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Unionfrom superset import create_appfrom tornado.wsgi import WSGIContainerfrom tornado.httpserver import HTTPServerfrom tornado.ioloop import IOLoopos.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服务,创建Windows服务nssm.exe install "SupersetService" "D:\Programs\Python\Python38\python.exe" "D:\Programs\Python\Python38\Lib\site-packages\supersetserver.py",如下图:

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

创建superset的windows服务

启动windows服务:nssm.exe start SupersetService,如下图:

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

启动superset的Windows服务

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

成功启动superset的windows服务

输入superset网址运行:http://127.0.0.1:8001/,成功登陆,如下图:

Tornado Web 服务器并以Windows服务运行开源轻量级BI平台Superset

成功登陆superset

为了达到最佳性能和稳定性,生产环境还是建议部署到Linux中,不建议在Windows下部署。

如果您喜欢这篇文章,请关注我,收藏、点赞、评论和转发,会让更多需要帮助的人看到这篇文章。举手之劳,善莫大焉!