gpt4 book ai didi

python - Django,动态 urlconfs,线程安全

转载 作者:太空狗 更新时间:2023-10-29 21:59:58 26 4
gpt4 key购买 nike

我需要以线程安全的方式根据 session 中的数据动态生成 urlpatterns。

我通过一个自定义的 URLResolver 实现了这一点,它将 url 解析推迟到以后。我知道如何从中间件设置 request.urlconf;但有一些原因我不能这样做(Django 缓存解析器,在我的情况下会导致无限的内存使用)。

我需要有人看一下实现,看看我是否正确处理了线程安全。

谢谢!

代码:

我的应用程序/urls.py:

urlpatterns = patterns('',
# other urlconfs
url(r'^/foo', include('foo.urls')),
)

foo/urls.py:

import threading
from django.core.urlresolvers import ResolverMatch

class MyResolver(RegexURLResolver):
def __init__(self):
self.resolver = threading.local()
return super(MyResolver, self).__init__(r'', None)

@property
def urlconf_module(self):
return self.resolver.value

def resolve(self, path):
def view(request):
resolver = request.session.get('myresolver', 'default')
resolver = getattr(import_module('foo.resolvers'), resolver)
self.resolver.value = resolver()
view, args, kwags = super(MyResolver, self).resolve(path)
return view(request, *args, **kwargs)
return ResolverMatch(view, (), {})

urlpatterns = [MyResolver()]

foo/resolvers.py:

class default(object):
@property
def urlpatterns(self):
return patterns('foo.views',
url(r'', 'error'),
)

class test(object):
@property
def urlpatterns(self):
return dynamically_generated_urlpatterns

最佳答案

我会说你实际上最好将它作为中间件来实现,因为它可能更快并且给你更多的控制权。

也许您可以展示更多关于您计划提交给函数的数据和可能的输出。

关于用例的更多详细信息会很好。

关于python - Django,动态 urlconfs,线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825231/

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