使用前先安装了 pip install tornado
抄个flask windows下部署方式:
根据Flask
官网介绍,由于Flask
内置的服务器性能不佳,推荐的主要的部署方式有如下几种:
上述这些部署方式,仅Tornado
是支持在windows
情况下部署的,配合上Nginx
可以达到比较好的效果。可已参考Nginx与tornado框架的并发评测。
先安装
用pip 就可以,pip install tornado 其实应该是随 flask安装好的?
1添加 web.py 文件,就是flask 的入口文件,app.run(...)
2在同级目录添加 tornado_server.py 文件,是 tornado的服务器监听文件
3在同级目录添加 tornado_server.bat 文件,用于服务启动批处理
web.py
# coding=utf-8 from flask import * import os from subprocess import check_output app=Flask(__name__) @app.route('/') def index(): print('aaa') return '<html><body><h1>tornado server发布成功!</h1></body></html>' @app.route('/test2/') def index02(): sentence=r'"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" E:\test-tornado\test2.py' p = os.popen(sentence).read() return p @app.route('/test3/') def index03(): #out = check_output(['python', r'E:\test-tornado\test2.py'],universal_newlines=True, shell=False) out = check_output(r'"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" E:\test-tornado\test2.py', universal_newlines=True, shell=False) print(out) return out if __name__ == '__main__': app.run(debug=True, host='127.0.0.1', port=8083)
/test2/
/test3/ 测试均无问题,可以正常获取到 arcpy 返回的结果。
tornado_server.py
# coding=utf-8 from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop from web import app if __name__ == '__main__': http_server = HTTPServer(WSGIContainer(app)) http_server.listen(8083) IOLoop.instance().start()
test2.py 当然这是独立的测试 arcpy功能用的
#coding:utf-8 import os import arcpy import time import random import sys from arcpy import env print('start') gdb = r'E:\test-data\data2.gdb' #str(sys.argv[1]) arcpy.ClearWorkspaceCache_management() arcpy.env.workspace=gdb fc = arcpy.ListFeatureClasses() for f in fc: print(f) print('over')
请求
http://localhost:8083/test3/
Tornado是一个Python Web框架和异步网络库,最初是由FriendFeed开发的。通过使用非阻塞网络I / O,Tornado可以扩展到成千上万的开放连接,使其非常适合 长时间轮询, WebSocket和其他需要与每个用户建立长期连接的应用程序。
但是,请看清楚下列说明。
Tornado Web框架和HTTP服务器一起提供了WSGI的全栈替代方案。尽管可以将Tornado HTTP服务器用作其他WSGI框架的容器(WSGIContainer
),但是这种组合有局限性,要充分利用Tornado,您将需要同时使用Tornado的Web框架和HTTP服务器。
就是说 tornado的web框架 也可以通过wcgi 部署到其他 web服务器上,比如iis ,tomcat ?
还有一种是 tornado服务器也支持部署 其他wsgi 框架,比如flask ,django, 比如上文里将 flask运行在 tornado服务器上 ?
但官网说这两种方式都有局限性,建议同时使用。怎么同时使用?
待查证。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步