在一台机器上共享芹菜工人的内存区域

2024-05-29 11:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在celery中在我的工作节点之间共享一些信息(例如缓存的授权令牌、统计信息等等)。在

如果我在我的任务文件中创建一个全局,它对每个worker是唯一的(我的workers是进程,其生命周期为1个任务/执行)。在

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

提前谢谢!在


Tags: 文件信息db节点进程状态老式全局
1条回答
网友
1楼 · 发布于 2024-05-29 11:38:32

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

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

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

相关问题 更多 >

    热门问题