zoukankan      html  css  js  c++  java
  • 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服务器上 ?

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

    待查证。

  • 相关阅读:
    安装和使用git遇到的问题总结
    继承时,构造函数和析构函数的调用顺序
    c++文件的读写
    虚函数
    纯虚函数
    继承
    连接到github
    NDK无法包含std的头文件(string,list等)的解决方法
    Centos7.3安装maven并配置加速镜像源
    分享几个实用好看的WordPress主题(第二波)
  • 原文地址:https://www.cnblogs.com/yansc/p/14605397.html
Copyright © 2011-2022 走看看