gpt4 book ai didi

python - django 1.5 中的 django.utils.thread_support

转载 作者:太空狗 更新时间:2023-10-30 01:22:52 26 4
gpt4 key购买 nike

我正在尝试实现一个 Django 自定义中间件,它使我可以在项目中的任何位置访问 request 对象,基于 the one suggested here .那篇文章是很久以前写的了,django 1.5那时没有库 thread_support。我应该使用什么替代方法来完成线程安全的本地存储来存储请求对象?这是自定义中间件中的代码:

from django.utils.thread_support import currentThread
_requests = {}

def get_request():
return _requests[currentThread()]

class GlobalRequestMiddleware(object):
def process_request(self, request):
_requests[currentThread()] = request

当然,它会引发异常:

ImproperlyConfigured: Error importing middleware myProject.middleware.global: 
"No module named thread_support"

编辑:

我找到了一个有效的修复方法:

from threading import local

_active = local()

def get_request():
return _active.request

class GlobalRequestMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
_active.request = request
return None

现在我有一个疑问:会不会导致内存泄露? _active 会发生什么?当请求结束时它会被清理吗?无论如何,已经发布了一个有效的答案。我将接受它,但非常欢迎任何其他(更好,如果可能)解决方案!谢谢!

最佳答案

替换

from django.utils.thread_support import currentThread
currentThread()

from threading import current_thread
current_thread()

关于python - django 1.5 中的 django.utils.thread_support,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com