zoukankan      html  css  js  c++  java
  • 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)

     




    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_'])








  • 相关阅读:
    Java [Leetcode 319]Bulb Switcher
    Java [Leetcode 122]Best Time to Buy and Sell Stock II
    谱聚类算法
    Java [Leetcode 238]Product of Array Except Self
    Java [Leetcode 260]Single Number III
    X++ StrFix方法
    D365 FO第三方访问https证书问题
    D365 FO 使用.NET DLL
    D365 FO第三方集成(四)---客户端调用
    D365 FO第三方集成(三)---服务实现
  • 原文地址:https://www.cnblogs.com/bayueman/p/6607357.html
Copyright © 2011-2022 走看看