Я использую фреймворк django-rest, и я могу получить и установить пользовательские заголовки, используя приведенную ниже информацию META,
class log_middleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self,request):
# set thread local values
# This will execute before every request
correlation_id = request.META['HTTP_X_REQUEST_ID'] if 'HTTP_X_REQUEST_ID' in request.META else str(uuid.uuid4())
request.META['HTTP_X_REQUEST_ID'] = correlation_id
#logger.debug("Entered service")
response = self.get_response(request)
response['HTTP_X_REQUEST_ID'] = correlation_id
#logger.debug("Processed response")
return response
Теперь в моем views.py я могу получить этот заголовок как request.META ['HTTP_X_REQUEST_ID']. и он доступен в заголовке ответа
Но когда я пытаюсь записать значения заголовка http в uwsgi, используя приведенный ниже конфиг, у него появляется пустое поле «-». Потому что в переменной uwsgi есть только актуальные заголовки запросов в переменной% var.XXX, а заголовки ответов переходят в заголовки% и показывают только количество и фактические значения.
Выпуск: https://github.com/unbit/uwsgi/issues/1407
Так есть ли в django способ добавить данные в фактический заголовок запроса вместо заголовка ответа?
[uwsgi]
master = 1
memory-report = true
module = my_service.wsgi
http = 0.0.0.0:8080
max-requests = 50
processes = 16
log-format = { "ctime": "%(ctime)", "addr": "%(addr)", "method": "%(method)", "uri": "%(uri)", "correlation_id": "%(var.HTTP_X_REQUEST_ID)" }
Но то же самое работает, если я установил заголовок HTTP_X_REQUEST при отправке самого запроса от остальных утилит клиента.