Django中所有Celery worker/memory缓存中的全局可访问对象

8 python django caching global-variables celery

我有非常标准的Django + Rabbitmq + Celery设置,1个Celery任务和5个工作人员.

任务上传相同(我简化一点)大文件(~100MB)异步到许多远程PC.

一切都工作正常,代价是使用大量内存,因为每个任务/工作人员都将大文件单独加载到内存中.

我想要做的是拥有某种缓存,可以访问所有任务,即只加载一次文件.基于locmem的Django缓存是完美的,但是文档说:"每个进程都有自己的私有缓存实例",我需要所有工作者都可以访问这个缓存.

试图玩#2129820中描述的Celery信号,但这不是我需要的.

所以问题是:有没有办法可以在Celery中定义全局内容(就像基于dict的类,我可以在其中加载文件或smth).或者在这种情况下我可以使用Django技巧吗?

谢谢.

Łuk*_*asz 1

在我看来,你需要的是 django 支持的 memcached。这样 Celery 中的每个任务都可以访问它。