Почему кеш базы данных Django не используется несколькими потоками?
Кажется, что каждый поток поддерживает свой отдельный кеш. Должен ли я просто использовать свой собственный объект Django, чтобы кэш базы данных использовался несколькими потоками? Какие минусы для этого?
Проблема, с которой я сталкиваюсь, заключается в следующем:
- Я использую кеш базы данных
- Сохраняю в кеш при обработке запроса
- Я получаю из кеша при обработке следующего запроса
Я ожидаю, что он будет в кеше, но его там нет. При печати идентификатора потока, я вижу, что это другой поток. Тот же поток получает попадание в кэш, но другой поток получает пропуск кэша.
Я не ожидаю, что это произойдет с базой данных кэша базы данных.
1 ответ
Это верно только в том случае, если вы используете серверную часть кэша locmem. Что вы не должны делать в производстве; используйте надлежащий кеш, будь то файловая система или кеш БД, или выделенный бэкэнд кеша, такой как memcached или redis.