flask在 tornado服务器中部署

使用前先安装了 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 FilesArcGISProinPythonenvsarcgispro-py3python.exe" E:	est-tornado	est2.py'
    p = os.popen(sentence).read()
    return p

@app.route('/test3/')
def index03():
    #out = check_output(['python', r'E:	est-tornado	est2.py'],universal_newlines=True, shell=False) 
    out = check_output(r'"C:Program FilesArcGISProinPythonenvsarcgispro-py3python.exe" E:	est-tornado	est2.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:	est-datadata2.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服务器上 ?

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

待查证。

原文地址:https://www.cnblogs.com/yansc/p/14605397.html