Flask 架構 --xunfeng實例研究

文件結構




啓動程序:

│ Config.py # 配置文件 │ README.md # 說明文檔 │ Run.bat # Windows啓動服務 │ Run.py # webserver │ Run.sh # Linux啓動服務,從新啓動前需把進程先結束掉 │ ├─aider │ Aider.py # 輔助驗證腳本 │ ├─db # 初始數據庫結構 │ ├─masscan # 內置編譯好的Masscan程序(CentOS win64適用),須要chmod+x給執行權限(root),若沒法使用請自行編譯安裝。 ├─nascan │ │ NAScan.py # 網絡資產信息抓取引擎 │ │ │ ├─lib │ │ common.py 其餘方法 │ │ icmp.py # ICMP發送類 │ │ log.py # 日誌輸出 │ │ mongo.py # 數據庫鏈接 │ │ scan.py # 掃描與識別 │ │ start.py # 線程控制 │ │ │ └─plugin │ masscan.py # 調用Masscan腳本 │ ├─views │ │ View.py # web請求處理 │ │ │ ├─lib │ │ Conn.py # 數據庫公共類 │ │ CreateExcel.py # 表格處理 │ │ Login.py # 權限驗證 │ │ QueryLogic.py # 查詢語句解析 │ │ │ ├─static #靜態資源目錄 │ │ │ └─templates #模板文件目錄 │ └─vulscan │ VulScan.py # 漏洞檢測引擎 │ └─vuldb # 漏洞庫目錄
start mongod.exe --port 65521 --dbpath Data --auth     1--啓動mongodb數據庫服務,端口是65521
start python Run.py                      2--啓動flask app程序 核心代碼: app.run(threaded=True, port=80,host='127.0.0.1')
start python aider/Aider.py
start python nascan/NAScan.py
start python vulscan/VulScan.py
start python Run.py:代碼 
app.debug = True
app.run(threaded=True, port=80,host='127.0.0.1')

設置了
app.debug = True後,flask將會執行如下的命令: 
options.setdefault('use_reloader', self.debug)
options.setdefault('use_debugger', self.debug)
options.setdefault('passthrough_errors', True)
try:
run_simple(host, port, self, **options)
finally:
# reset the first request information if the development server
# resetted normally. This makes it possible to restart the server
# without reloader and that stuff from an interactive shell.
self._got_first_request = False
其中
run_simple說明以下: 

Start a WSGI application. Optional features include a reloader,
multithreading and fork support.
方法定義說明:
def run_simple(hostname, port, application, use_reloader=False,
use_debugger=False, use_evalex=True,
extra_files=None, reloader_interval=1,
reloader_type='auto', threaded=False,
processes=1, request_handler=None, static_files=None,
passthrough_errors=False, ssl_context=None):

 
示例: 

if __name__ == '__main__':
from werkzeug.serving import run_simple
app = create_app()   --這個app,能夠是自定義的WSGI程序  ,詳情請看
run_simple('127.0.0.1', 5000, app, use_debugger=True, use_reloader=True)python

 




flask app文件講解:

入口函數:
def run(self, host=None, port=None, debug=None, **options):


其餘函數:
create_jinja_environment(self): 
-----建立jinja2環境; based on :attr:`jinja_options` and :meth:`select_jinja_autoescape`.
-----其中:
jinja_options = ImmutableDict( extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_'])
相關文章
相關標籤/搜索