У меня довольно стандартная настройка Django + Rabbitmq + Celery с 1 заданием Celery и 5 рабочими.
Задача загружает тот же (я немного упрощаю) большой файл (~ 100 МБ) асинхронно на несколько удаленных ПК.
Все работает нормально за счет использования большого количества памяти, поскольку каждая задача / рабочий загружает этот большой файл в память отдельно.
То, что я хотел бы сделать, это иметь какой-то кэш, доступный для всех задач, то есть загрузить файл только один раз. Кеширование Django, основанное на locmem, было бы идеальным, но как в документации сказано: «у каждого процесса будет свой собственный экземпляр частного кэша», и мне нужен этот кэш, доступный для всех работников.
Пытался играть с сигналами сельдерея, как описано в # 2129820 , но это не то, что мне нужно.
Таким образом, вопрос заключается в следующем: есть ли способ определить что-то глобальное в Celery (например, класс, основанный на dict, где я мог бы загрузить файл или что-то в этом роде). Или я могу использовать трюк с Джанго в этой ситуации?
Спасибо.