Глобально доступный объект через всех рабочих Celery / кэш памяти в Django

У меня есть довольно стандартная установка Django+Rabbitmq+Celery с 1 задачей Сельдерея и 5 рабочими.

Задача загружает то же (я упрощаю немного), большой файл (~100MB) асинхронно ко многим удаленным ПК.

Все хорошо работает за счет использования большой памяти, начиная с каждой загрузки задачи/рабочего что большой файл в память отдельно.

То, что я хотел бы сделать, должно иметь некоторый кэш, доступный для всех задач, т.е. загрузить файл только однажды. Django, кэширующийся на основе locmem, был бы прекрасен, но как документация говорит: "каждый процесс будет иметь свой собственный частный экземпляр кэша", и мне нужен этот кэш, доступный для всех рабочих.

Попробованный для проигрывания с Сельдереем сигнализирует как описанный в № 2129820, но это не то, в чем я нуждаюсь.

Таким образом, вопрос: есть ли способ, которым я могу определить что-то глобальное в Сельдерее (как класс на основе dict, где я мог загрузить файл или что-то). Или есть ли прием Django, который я мог использовать в этой ситуации?

Спасибо.

8
задан Community 23 May 2017 в 12:02
поделиться

1 ответ

Мне кажется, что вам нужно использовать memcached для django. Таким образом, каждая задача в Celery будет иметь к нему доступ.

1
ответ дан 6 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: