其他分享
首页 > 其他分享> > 更改Django的ROOT_URLCONF

更改Django的ROOT_URLCONF

作者:互联网

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

但是,我们还运行Celery进行一系列夜间任务,其中之一是发送电子邮件.在这里,我们没有请求(很明显),因此我们不能使用该请求以这种方式切换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 uses.

标签:django-celery,python,django
来源: https://codeday.me/bug/20191122/2056731.html