请求流程

1 Application 入口

image

wsgigw = httpgateway.WSGIGateway(httpgateway.get_func_name,logger.errlog,logger.acclog,apicube)

其中

  • httpgateway.get_func_name : 根据 environ['PATH_INFO'] 找到对应的 url

  • logger.errlog : 错误日志文件

  • logger.acclog : 访问日志文件

  • apicube : protocols 字典,key 为 func name,value 为 Protocol 实例

wsgigw.process 主要就是做三件事

  • 对 wsgienv 进行封装为 req

    • req = Request(reqid, wsgienv, ip) : req 对 wsgienv 进行封装,此 req 会以参数传入后端 handler 函数中

  • 路由查询

  • 将 req 传给对 api 封装后的 protocol 实例

    • protocol = self._protocols.get(funcname)

    • httpstatus, headers, content = protocol(req)

    • protocol 实例是对 handler 函数进行的包装,进行统一日志管理以及参数校验等操作

Last updated