我有非常标准的 Django+Rabbitmq+Celery 设置,有 1 个 Celery 任务和 5 个工人。
任务将相同的(我简化了一点)大文件(~100MB)异步上传到许多远程 PC。
一切都以使用大量内存为代价工作正常,因为每个任务/工作人员都将那个大文件分别加载到内存中。
我想做的是有某种缓存,所有任务都可以访问,即只加载一次文件。基于 locmem 的 Django 缓存将是完美的,但就像文档所说:“每个进程都有自己的私有缓存实例”,我需要所有工作人员都可以访问这个缓存。
尝试使用#2129820中描述的 Celery 信号,但这不是我需要的。
所以问题是:有没有一种方法可以在 Celery 中定义一些全局的东西(比如基于 dict 的类,我可以在其中加载文件或 smth)。或者在这种情况下我可以使用 Django 技巧吗?
谢谢。