Указание времени ожидания при извлечении / вводе данных в memcache (django) - PullRequest
3 голосов
/ 03 апреля 2012

У меня есть http-сервер на основе django, и я использую django.core.cache.backends.memcached.MemcachedCache в качестве клиентской библиотеки для доступа к memcache. Я хочу знать, можем ли мы установить тайм-аут или что-то (скажем, 500 мс.), Чтобы вызов memcached возвращал значение False, если он не может получить доступ к кешу в течение 500 мс. и мы делаем звонок в БД. Есть ли такая настройка для этого?

1 Ответ

0 голосов
/ 03 апреля 2012

Не пробовал раньше, но вы можете использовать многопоточность и установить таймаут для вызова функции для кэширования.В качестве примера, игнорируйте пример, приведенный в основном тексте по этой ссылке, но посмотрите на комментарий Джима Кэрролла:

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 потоком, и если да, прерывает ли основной поток то, что вы действительно хотите сделать?В любом случае, это потенциальная отправная точка.Я искал вариант конфигурации, который позволил бы это, и ничего не нашел.

...