Кэширование связанного с Django поля в запущенном процессе Python
class Publisher(models.Model):
name = models.CharField(max_length=200)
class Book(models.Model):
publisher = models.ForeignKey(Publisher, on_delete=models.PROTECT)
name = models.CharField(max_length=255)
Имеется сериализатор DRF, который возвращает книги и издательство, связанное с книгой. Существуют тысячи книг, в то время как издателей всего сотня. Распределение данных составляет 1:1000, и поэтому имеет смысл хранить объекты издателей в кэше приложения Python после первой загрузки до следующего перезапуска приложения.
Как я могу кэшировать publisher с помощью lru_cache в Python?
Ограничения и другая информация
- I'm already using Django cache with redis backend for other purposes and I don't think redis would give a significant boost(same network call + lookup).
- Adding custom manager to the
Publishermodel withget, filter, alldoesn't help.allmethod gets called whilerelatedfield lookup happens but there is noidin the instance to find the lookup. - The object lookup happens in the related description get.
Есть ли способ изменить поведение без написания пользовательского поля?