繁体   English   中英

改变Django的ROOT_URLCONF

[英]Changing Django's ROOT_URLCONF

我们正在建立一个多租户网站,一些租户需要不同的URL等。 没什么大不了的,这是我们已经通过制作多个urls.py来解决的问题,它可以作为ROOT_URLCONF 当涉及到请求时,我们只需使用设置request.urlconf的中间件。 到现在为止还挺好。

但我们也在为一堆夜间任务运行Celery,其中一个就是发送电子邮件。 在这里我们没有(显然) request ,所以我们不能用那个方式切换ROOT_URLCONF 但是改变django.conf.settings.ROOT_URLCONF也不起作用(这有点合乎逻辑)。 有没有办法切换正在使用的“中间过程”的URLConf?

运行多个Celery实例并不是一个真正的选项,每个实例都有自己的设置,因为并非所有对象都可以有效地链接到它们所属的租户(视图不同,我们从知道它的租户的User开始)。

你可以使用django.core.urlresolvers.set_urlconf

from django.core.urlresolvers import set_urlconf

set_urlconf('module.path.urls')

这就是django.core.handlers.base.BaseHandler.get_response用于为当前请求设置解析器的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM