存储和访问请求响应对象

艺术

我需要存储一个已创建/打开的LDAP连接,因此多个模型,视图等可以重用一个连接,而不是每次都创建一个新连接。在请求期间首次需要时,此连接应打开,而在发送响应时(完成生成页面),则应关闭此连接。该连接不应在不同的请求/响应之间共享。

怎么做呢?在哪里存储连接以及如何确保连接最终关闭?

更多信息。作为附加信息源,我使用LDAP连接。LDAP数据包含我无法存储在数据库中的详细信息(冗余/一致性原因),例如MS Exchange邮件组。我可能需要多个点的LDAP数据,在响应生成期间,不同的对象/实例应该访问它。

爱丽丝·希顿

存储连接资源以便可以在各个组件之间共享的一种方法是使用线程本地存储

例如,在myldap.py

import threading
_local = theading.local()

def get_ldap_connection():
    if not hasattr(_local, 'ldap_connection') or _local.ldap_connection is None:
        _local.ldap_connection = create_ldap_connection()

    return _local.ldap_connection

def close_ldap_connection():
    if hasattr(_local, 'ldap_connection') and _local.ldap_connection is not None:
        close_ldap_connection(_local.ldap_connection)
        _local.ldap_connection = None

因此,第一次myldap.get_ldap_connection从特定线程调用时,它将打开连接。来自同一线程的后续调用将重用该连接。

为了确保完成工作后关闭连接,您可以实现Django中间件组件除其他事项外,这将允许您指定一个挂钩,该挂钩在视图返回其响应对象之后被调用

然后,中间件可以这样调用myldap.close_ldap_connection()

import myldap

Class CloseLdapMiddleware(object):  
    def process_response(self, response):  
        myldap.close_ldap_connection()
        return response

最后,您将需要在以下位置添加中间件settings.py MIDDLEWARE_CLASSES

MIDDLEWARE_CLASSES = [
    ...
    'path.to.CloseLdapMiddleWare',
    ...
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

请求对象和响应对象

来自分类Dev

请求和响应对象

来自分类Dev

从响应对象获取请求主体

来自分类Dev

修改Python“请求”模块响应对象

来自分类Dev

ServiceStack请求和响应对象

来自分类Dev

休息架构-请求和响应对象

来自分类Dev

获取请求响应对象python的值

来自分类Dev

如何访问此json响应对象?

来自分类Dev

访问 Slim 3 响应对象的数据

来自分类Dev

对Node的http.createServer中的请求和响应对象的访问是否是关闭的结果?

来自分类Dev

Javascript:无法访问函数外部的响应对象和动态生成的html元素

来自分类Dev

请求完整的响应对象,而不是紧凑的响应对象foursquare场所搜索API?

来自分类Dev

矩形从POST请求获取干净的响应对象

来自分类Dev

如何从POST请求中获取响应对象?

来自分类Dev

Axios-从响应对象获取请求URI数据

来自分类Dev

如何从Node响应对象获取请求URL?

来自分类Dev

如何使用正确的请求和响应对象调用函数?

来自分类Dev

帆脚本块中的访问响应对象

来自分类Dev

无法访问 Laravel 的 JSON 响应对象的值

来自分类Dev

如何在R中的响应对象中下载和/或提取存储在“原始”二进制zip对象中的数据?

来自分类Dev

更新端点的响应对象

来自分类Dev

遍历响应对象角度

来自分类Dev

创建 HTTP 响应对象

来自分类Dev

Gson HTTP 响应对象

来自分类Dev

为Web服务的请求和响应对象建模的设计模式

来自分类Dev

使用回调时express.js请求/响应对象的生命周期

来自分类Dev

如何监听请求完成事件?或者如何获取响应对象

来自分类Dev

Python:如何使用json.load模拟HTTPSConnection请求和响应对象

来自分类Dev

使用回调时express.js请求/响应对象的生命周期

Related 相关文章

热门标签

归档