У меня есть задача, которую нужно запускать для «большинства» объектов в моей базе данных один раз каждые несколько периодов времени (один раз в день, один раз в неделю и т. Д.).В основном это означает, что у меня есть какой-то запрос, который выглядит так, как будто он выполняется в своем собственном потоке.
for model_instance in SomeModel.objects.all():
do_something(model_instance)
(Обратите внимание, что на самом деле это фильтр () не все (), но тем не менее я все равно получаювыбор очень большого набора объектов.)
Проблема, с которой я сталкиваюсь, заключается в том, что после некоторого запуска поток прерывается моим хостинг-провайдером, потому что я использую слишком многообъем памяти.Я предполагаю, что все это использование памяти происходит, потому что, хотя объект QuerySet
, возвращаемый моим запросом, изначально имеет очень маленький объем памяти, он в конечном итоге растет, поскольку объект QuerySet
кэширует каждый model_instance
когда я их перебираю.
Мой вопрос таков: "Как лучше всего перебрать почти все SomeModel
в моей базе данных эффективным способом памяти?"или, возможно, мой вопрос «как я могу« кэшировать »экземпляры модели из набора запросов django?»
РЕДАКТИРОВАТЬ: я на самом деле использую результаты набора запросов для создания серии новых объектов,Поэтому я не обновляю запрашиваемые объекты вообще.