ComputeReqIdMiddleware模块解析:
from oslo_context import context
from oslo_middleware import base
import webob.dec
ENV_REQUEST_ID = 'openstack.request_id'
HTTP_RESP_HEADER_REQUEST_ID = 'x-compute-request-id'
class ComputeReqIdMiddleware(base.Middleware):#继承oslo.middleware
@webob.dec.wsgify
def __call__(self, req):
req_id = context.generate_request_id()#调用oslo.context模块来生成request ID
req.environ[ENV_REQUEST_ID] = req_id #将request ID设置到请求的环境变量里
response = req.get_response(self.application) #获取响应
if HTTP_RESP_HEADER_REQUEST_ID not in response.headers:
response.headers.add(HTTP_RESP_HEADER_REQUEST_ID, req_id)#将请求ID设置到响应头中
return response