Разделите области памяти между рабочими сельдерея на одной машине - PullRequest
7 голосов
/ 05 марта 2012

Я хочу поделиться небольшими порциями информации между моими рабочими узлами (например, кэшированные токены авторизации, статистика, ...) в сельдерее.

Если я создаю глобал внутри своего файла задач, он уникален для каждого работника (мои работники являются процессами и имеют срок службы 1 задачи / выполнения).

Какая лучшая практика? Стоит ли сохранять внешнее состояние (БД), создавать старомодную разделяемую память (может быть сложно из-за различных реализаций пула в сельдерее)?

Заранее спасибо!

1 Ответ

7 голосов
/ 05 марта 2012

Я наконец-то нашел достойное решение - ядро ​​python multiprocessing-Manager:

from multiprocessing import Manager
manag = Manager()
serviceLock = manag.Lock()
serviceStatusDict = manag.dict()

К этому диктовке можно получить доступ из любого процесса, он синхронизирован, но при одновременном доступе к нему необходимо использовать блокировку (как в любой другой реализации совместно используемой памяти).

...