【发布时间】:2020-03-23 20:29:05
【问题描述】:
我有一个 Django 3 应用程序,使用 LDAP 服务类,如下所示:
class LDAPService:
def init(self, host: str, user: str, password: str, ssl: bool = True):
...
def bind(): # The connection is done here, __init__ just sets values
....
def create_ou(base: str, ou_name: str):
....
我应该在哪里(或何时)初始化服务以在视图中使用它?绑定步骤大约需要 2 秒才能应用,我不能对每个请求都执行此操作。如何保持此类的实例共享,而不是每次都完成?我可能有一个使用单例的解决方案,和/或在类似的设置文件中对其进行初始化,但我认为有更好的方法。
我知道在生产中,可能有多个工人,所以有多个实例,但我可以接受。
另一个问题:如何使用来自数据库模型的连接凭据完成上述所有操作(所以不是在 django 启动时,而是在任何时候)
我对 django 生态系统完全陌生,我发现的关于服务层的东西都是关于 django 模型的。我想做与常规服务层中的模型相同的接口,但处理的不是 django 模型。
我认为 LDAP 连接本身不应该存在,只有 CRUD 方法,但我不知道在哪里放置它,以及如何让 django 与之交互。
提前感谢您的建议:)
【问题讨论】:
-
现在我已将该服务重命名为 _LDAPService,并在文件中将其初始化为 LDAPService,这是我在视图中使用的。
-
这是一种解决方法,仍然在问问题:)
标签: python django python-3.x design-patterns business-logic