8

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

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

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

提前致谢!

4

1 回答 1

9

我终于找到了一个不错的解决方案——core python multiprocessing-Manager:

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

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

于 2012-03-05T13:34:51.690 回答