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

Gre*_*gor 7 python shared-memory celeryd

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

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

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

提前致谢!

Gre*_*gor 7

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

from multiprocessing import Manager
manag = Manager()
serviceLock = manag.Lock()
serviceStatusDict = manag.dict()
Run Code Online (Sandbox Code Playgroud)

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

  • 你在哪里初始化这个经理? (2认同)