单独运行flask经常死机,安装tornado,配合flask使用。
1.安装tornado
pip install tornado
2.tornado+flask(http访问)
2.1最简单的flask web应用,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运行程序,tornado_http_server.py代码
对新手来说需要注意的地方:
from hello import app,这里的hellp对应上面的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默认值为1,即默认仅开启一个进程;如果<=0,则自动根据机器硬件的cpu核芯数创建同等数目的子进程;如果>0,则创建num_processes个子进程。
IOLoop.instance().start()
2.3运行tornado程序
运行tornado_http_server.py,就不再需要运行hello.py。可以理解通过tornado调用flask。
python tornado_http_server.py
2.4.访问测试
http://www.kwaili.com:5001
3.tornado+flask(https访问)
前提条件,需要申请ssl证书,申请成功会得到几个证书相关文件,备用(拷贝到项目目录)。
3.1准备好flask web应用文件
app366.py
# 以上代码省略
......
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000)
3.2编辑tornado运行程序,tornado_https_server.py代码
监听443端口,即https访问使用的默认端口
应用绑定的端口是5000,与上面app366.py文件中的端口相同
certfile对应的是ssl证书,keyfile对应密钥
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函数或变量
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") # 设置对外开启访问,端口设置为5000,与app366中设置的端口相同
server.listen(443)
ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
3.3运行tornado程序
运行tornado_https_server.py,就不再需要运行app366.py。可以理解通过tornado调用flask。
python tornado_https_server.py
3.4.访问测试
https://www.kwaili.com