學(xué)習(xí)Flask011:tornado與flask

單獨(dú)運(yùn)行flask經(jīng)常死機(jī),安裝tornado,配合flask使用。

1.安裝tornado

pip install tornado

2.tornado+flask(http訪問(wèn))

2.1最簡(jiǎn)單的flask web應(yīng)用,hello.py代碼
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Test Hello World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5001)
2.2編輯tornado運(yùn)行程序,tornado_http_server.py代碼

對(duì)新手來(lái)說(shuō)需要注意的地方:
from hello import app,這里的hellp對(duì)應(yīng)上面的hello.py文件
端口用的是5001,與hello.py文件中的端口相同

from tornado.ioloop import IOLoop
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from hello import app

http_server=HTTPServer(WSGIContainer(app))
http_server.bind(5001,"0.0.0.0")            # 端口必須與flask端口相同
http_server.start(1)                        # num_processes默認(rèn)值為1,即默認(rèn)僅開(kāi)啟一個(gè)進(jìn)程;如果<=0,則自動(dòng)根據(jù)機(jī)器硬件的cpu核芯數(shù)創(chuàng)建同等數(shù)目的子進(jìn)程;如果>0,則創(chuàng)建num_processes個(gè)子進(jìn)程。
IOLoop.instance().start()
2.3運(yùn)行tornado程序

運(yùn)行tornado_http_server.py,就不再需要運(yùn)行hello.py??梢岳斫馔ㄟ^(guò)tornado調(diào)用flask。

python tornado_http_server.py
2.4.訪問(wèn)測(cè)試

http://www.kwaili.com:5001

捕獲http.PNG

3.tornado+flask(https訪問(wèn))

前提條件,需要申請(qǐng)ssl證書(shū),申請(qǐng)成功會(huì)得到幾個(gè)證書(shū)相關(guān)文件,備用(拷貝到項(xiàng)目目錄)。

3.1準(zhǔn)備好flask web應(yīng)用文件

app366.py

# 以上代碼省略
......

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000)
3.2編輯tornado運(yùn)行程序,tornado_https_server.py代碼

監(jiān)聽(tīng)443端口,即https訪問(wèn)使用的默認(rèn)端口
應(yīng)用綁定的端口是5000,與上面app366.py文件中的端口相同
certfile對(duì)應(yīng)的是ssl證書(shū),keyfile對(duì)應(yīng)密鑰

import os.path

from tornado.httpserver import HTTPServer
from tornado.wsgi import WSGIContainer
from tornado import ioloop
from app366 import app

def main():

    application = HTTPServer(WSGIContainer(app))  # 文件中的app函數(shù)或變量

    server = HTTPServer(application, ssl_options={
        "certfile": os.path.join(os.path.abspath("."), "www.kwaili.com_bundle.crt"),
        "keyfile": os.path.join(os.path.abspath("."), "www.kwaili.com.key")
    })
    application.bind(5000, "0.0.0.0")  # 設(shè)置對(duì)外開(kāi)啟訪問(wèn),端口設(shè)置為5000,與app366中設(shè)置的端口相同
    server.listen(443)
    ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()
3.3運(yùn)行tornado程序

運(yùn)行tornado_https_server.py,就不再需要運(yùn)行app366.py??梢岳斫馔ㄟ^(guò)tornado調(diào)用flask。

python tornado_https_server.py
3.4.訪問(wèn)測(cè)試

https://www.kwaili.com

捕獲https.PNG

tornado配置https訪問(wèn)搞了好久,如果覺(jué)得對(duì)你有用,點(diǎn)個(gè)贊,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容