大赵传奇

GIS解决方案,webgis , 桌面、数据、服务--QQ276605216

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用前先安装了 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服务器上 ?

但官网说这两种方式都有局限性,建议同时使用。怎么同时使用?

待查证。

posted on   赵长青  阅读(1522)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示