Django 中使用 memcache 的最佳实践
当然, 你可以抛开Django的cache系统, 在代码中使用最基本的python-memcached. 可是, 这样到处创建memcache Client, 浪费资源而且不利于管理, 更重要的是无法即时关闭socket, 导致了长连接. 通过阅读Django cache系统的源代码( django/core/cache/backends/memcached.py, 我们总结出了一个最佳的实践方法.
建立一个cache.py文件, 文件中定义要使用个各种memcache Client, 通过signal在request结束的时候通过回调函数关闭memcache的socket.
例如:
from django.core.cache.backends.memcached import CacheClass
user_mc = CacheClass('%s:%s;%s:%s' % ('11.11.11.11', '11211', '22.22.22.22', '11212'), {})
if hasattr(user_mc, 'close'): signals.request_finished.connect(user_mc.close)
然后, 在任何Django的view中, 只需要from cache import user_mc, 就可以自由的使用user_mc了. 即不需要自己定义, 也不需要自己关闭. 经过实际测试, 这种实践效果不错.
作者:@henryhuang 原文
079caf97c33d439abb767dd634c6f99b
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。