Sorry about second post but I'm so thrilled about this thread local approach! Thanks Waldemar.
This changes everything, EVERYTHING. I can just do: settings.__class__.SITE_ID = make_tls_property() settings.__class__.MEDIA_URL = make_tls_property() settings.__class__.MEDIA_ROOT = make_tls_property() # This does not have to be in settings object but for the sake of example: settings.__class__.REQUEST = make_tls_property() After which I create own middleware that sets them for each request. Then I can just access the values with settings.REQUEST, settings.SITE_ID ... Only thing I probably have to be aware is that if this make_tls_property is not done early enough my apps must not rely on this method: SETTING = getattr(settings, 'MYAPP_SETTING', 'default') especially if the use SITE_ID, MEDIA_URL or MEDIA_ROOT. On Jan 29, 2:55 pm, Jari Pennanen <[email protected]> wrote: > Certainly something new for me. > > That does look like a rather cool. Essentially if that works one could > save even the request object to thread "global" and it would be > accessible anywhere. > > It would solve many problems, such as django's authentication > middleware's shortcoming where it does not pass request object to the > auth backend's get_user() which is sole reason I had to write *own* > authentication middleware for per site basis. > > Another unrelated thing I'm now wondering is the django.core.cache, is > it faster than my simple dict cache? That is { 'example.com' : 5, ...} > should I change my caching to this django.core.cache... I'll have to > study this further. > > On Jan 29, 10:21 am, Waldemar Kornewald <[email protected]> wrote: > > > > > > > > > Hi, > > it's possible to manipulate the settings object in a thread-safe way. > > Here's our dynamic site > > middleware:https://bitbucket.org/wkornewald/djangotoolbox/src/535feb981c50/djang...... > > > As you can see, it makes SITE_ID a thread-local property which has a > > different value for every thread. > > > Hope this helps someone. > > > Bye, > > Waldemar > > > --http://www.allbuttonspressed.com/ -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.
