在memcache中获取/放置数据时指定超时(django)

时间:2012-04-03 17:33:52

标签: python django timeout memcached

我有一个基于django的http服务器,我使用django.core.cache.backends.memcached.MemcachedCache作为客户端库来访问memcache。我想知道我们是否可以设置超时或某事(比如500ms。),以便对memcached的调用如果无法访问缓存500ms则返回False。我们打电话给DB。有没有这样的设置呢?

1 个答案:

答案 0 :(得分:0)

之前没有尝试过,但您可以使用线程并为函数调用缓存设置超时。例如,忽略此链接主体中提供的示例,但请查看Jim Carroll的评论:

http://code.activestate.com/recipes/534115-function-timeout/

适合您可能使用的东西:

from threading import Timer
import thread, time, sys

def timeout():
    thread.interrupt_main()

try:
    Timer(0.5, timeout).start()
    cache.get(stuff)
except:
    print "Use a function to grab it from the database!"

我现在没有时间对它进行测试,但我担心的是Django本身是否有线程,如果是的话,是否会打断主线程你真正想要做什么?无论哪种方式,这都是一个潜在的起点。我确实寻找了一个配置选项,允许这样做,什么也没找到。