我在调试通过同一段代码的多个请求时遇到问题,因此需要上下文信息。并使用这个stackoverflow的答案 Django logging with user/ip
使用唯一的 request_id 记录每个请求,能够轻松查看每个请求流。但问题是当group_send
django 内部有使用async_to_sync
.
由于代码在不同的线程上运行,线程本地存储在这种情况下将不起作用,有没有可能将线程本地存储传播到子线程的方法?
我还在文档中发现
async_to_sync
“Threadlocals 和 contextvars 值在两个方向上都保留在边界上。”。这是否意味着线程局部变量以某种方式共享?如果是这样,为什么记录器无法获取该线程局部变量?无论如何要正确记录 django 视图,包含所有请求信息的频道,而不必在每条日志消息上提供额外信息?
谢谢!
该async_to_sync
行的链接:https ://docs.djangoproject.com/en/3.0/topics/async/