使用前先安裝了 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服務器上 ?
但官網說這兩種方式都有局限性,建議同時使用。怎么同時使用?
待查證。