我想在 celery 中的工作节点之间共享小块信息(例如缓存的授权令牌、统计信息等)。
如果我在任务文件中创建一个全局变量,那么它对于每个工作人员都是唯一的(我的工作人员是进程,并且其生命周期为 1 个任务/执行)。
最佳实践是什么?
我应该在外部保存状态(DB),创建一个老式的共享内存(由于 celery 中不同的池实现,这可能很困难)?
提前致谢!
我终于找到了一个不错的解决方案 - core python multiprocessing-Manager:
from multiprocessing import Manager
manag = Manager()
serviceLock = manag.Lock()
serviceStatusDict = manag.dict()
这个字典可以从每个进程访问,它是同步的,但是在并发访问它时必须使用锁(就像在所有其他共享内存实现中一样)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)