在一台机器上共享芹菜工人之间的记忆区域

时间:2012-03-05 11:04:53

标签: python shared-memory celeryd

我想在芹菜中分享我的工作节点之间的小块信息(例如缓存的授权令牌,统计信息......)。

如果我在我的任务文件中创建一个全局文件,那么每个工作人员都是唯一的(我的工作人员是进程并且具有1个任务/执行的生命周期)。

最佳做法是什么? 我应该在外部保存状态(DB),创建一个老式的共享内存(由于芹菜中不同的池实现,可能很难)?

提前致谢!

1 个答案:

答案 0 :(得分:7)

我终于找到了一个不错的解决方案 - 核心python多处理 - 管理器:

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

这个dict可以从每个进程访问,它是同步的,但你在同时访问它时必须使用一个锁(就像在其他每个共享内存实现中一样)。