1 from flask import Flask 2
3 app = Flask(__name__) 4
5
6 @app.route('/') 7 def hello_world(): 8 return 'Hello World!'
9
10
11 if __name__ == '__main__': 12 app.run(host='0.0.0.0', port=9000) 13 '''
14 第4行,引入Flask類,Flask類實現了一個WSGI應用 15 第5行,app是Flask的實例,它接收包或者模塊的名字做爲參數,但通常都是傳遞__name__。 16 讓flask.helpers.get_root_path函數經過傳入這個名字肯定程序的根目錄,以便得到靜態文件和模板文件的目錄。 17 第7~9行,使用app.route裝飾器會將URL和執行的視圖函數的關係保存到app.url_map屬性上。 18 處理URL和視圖函數的關係的程序就是路由,這裏的視圖函數就是hello_world。 19 第11行,使用這個判斷能夠保證當其餘文件引用這個文件的時候(例如「from hello import app」)不會執行這個判斷內的代碼,也就是不會執行app.run函數。 20 第12行,執行app.run就能夠啓動服務了。默認Flask只監聽虛擬機的本地127.0.0.1這個地址,端口爲5000。 21 而咱們對虛擬機作的端口轉發端口是9000,因此須要制定host和port參數,0.0.0.0表示監聽全部地址,這樣就能夠在本機訪問了。 22 服務器啓動後,會調用werkzeug.serving.run_simple進入輪詢,默認使用單進程單線程的werkzeug.serving.BaseWSGIServer處理請求, 23 實際上仍是使用標準庫BaseHTTPServer.HTTPServer,經過select.select作0.5秒的「while TRUE」的事件輪詢。 24 當咱們訪問「http://127.0.0.1:9000/」,經過app.url_map找到註冊的「/」這個URL模式,就找到了對應的hello_world函數執行,返回「hello world!」,狀態碼爲200。 25 若是訪問一個不存在的路徑,如訪問「http://127.0.0.1:9000/a」,Flask找不到對應的模式,就會向瀏覽器返回「Not Found」,狀態碼爲404 26 '''