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 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服務器上 ?

但官網說這兩種方式都有局限性,建議同時使用。怎么同時使用?

待查證。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM