Доля областей памяти между работниками сельдерея на одной машине
Я хочу поделиться небольшими фрагментами информации между моими рабочими узлами (например, кэшированные токены авторизации, статистика и т. Д.) В сельдерее.
Если я создаю глобальный внутри моего файла задач, он уникален для каждого рабочего (мои работники являются процессами и имеют срок службы 1 задачи / выполнения).
- Динамически создавать список общих массивов с использованием многопроцессорности python
- Общая память между процессами python
- Могут ли процессы python обмениваться живыми объектами?
- Как легко хранить удобные для чтения на python структуры данных только для чтения в общей памяти
- Предоставление доступа к общей памяти после того, как дочерние процессы уже запущены
Какова наилучшая практика? Должен ли я сохранять состояние извне (БД), создавать старомодную общую память (может быть сложно из-за различных реализаций пула в сельдере)?
Заранее спасибо!
- Изменение различных объектов python в параллельных процессах, соответственно
- Создайте новую obj с функцией deepcopy, но с новой переменной share obj со старым obj
- Доля SciPy разреженного массива между объектами процесса
- Pikon fork (): передача данных от дочернего к родительскому
- pyspark У процесса python на узле исполнителя передаются широковещательные переменные в ram?
One Solution collect form web for “Доля областей памяти между работниками сельдерея на одной машине”
Наконец, я нашел достойное решение – core python multiprocessing-Manager:
from multiprocessing import Manager manag = Manager() serviceLock = manag.Lock() serviceStatusDict = manag.dict()
Этот dict может быть доступен из каждого процесса, он синхронизирован, но вы должны использовать блокировку при обращении к ней одновременно (например, в любой другой реализации общей памяти).