Проблема заключается в очень серьезной утечке памяти до тех пор, пока сервер не выйдет из строя (или вы не сможете восстановиться, убив службу работника сельдерея, которая освобождает всю используемую оперативную память)этот вопрос, но этому предупреждению уделяется очень мало внимания. В документации по сельдерею API здесь
Предупреждение: серверы используют ресурсы для хранения и передачи результатов.Чтобы обеспечить освобождение ресурсов, вы должны в конечном итоге вызвать get () или забыть () для КАЖДОГО Экземпляр AsyncResult, возвращаемый после вызова задачи.
И это разумнопредположить, что утечка связана с этим предупреждением.
Но концептуальная проблема, основанная на моем понимании сельдерея, заключается в том, что экземпляры AsyncResult создаются для нескольких представлений Django в пользовательском сеансе: некоторые создаются во время инициализации./ порождает новые задачи в одном представлении, а некоторые вы можете создать позже вручную (используя идентификатор_ задачи, сохраненный в сеансе пользователя) для проверки хода выполнения (состояния) этих задач в другом представлении.
Следовательно, объекты AsynResult будутв конечном итоге выходят за рамки нескольких представлений в реальном приложении Django, и вы не хотите вызывать get () в ЛЮБОМ из этих представлений, потому что не хотите замедлять процесс демона Django (или apache2).
Решение, позволяющее никогда не выпускать объекты AsyncResult из области видимости до вызова их get() метод?
CELERY_RESULT_BACKEND = 'django-db' #backend - это mysql DB
BROKER_URL = 'pyamqp: // localhost' # rabbitMQ