Celery Task instanciation缓存

时间:2016-12-29 21:55:39

标签: python django caching celery

我尝试使用Celery 4.0.2在任务中缓存大型资源文件。

在文档中查看,我已经完成了任务缓存部分。

http://docs.celeryproject.org/en/latest/userguide/tasks.html#instantiation

这对缓存资源也很有用,例如,缓存数据库连接的基本Task类:

from celery import Task

class DatabaseTask(Task):
    _db = None

    @property
    def db(self):
        if self._db is None:
            self._db = Database.connect()
        return self._db

在我的情况下,我做了一些更改来缓存我的大文件资源,以及它在任务中共享的对象,但是大文件资源使用的内存将永远缓存在任务中。

from celery import Task

class BigResourceTask(Task):
    _resource = None

    @property
    def resource(self):
        if self._resource is None:
            self._resource = load_big_resource()
        return self._resource 

如何在执行所有相关任务后释放内存或使其过期?

1 个答案:

答案 0 :(得分:1)

由于您在检查它是否存在后按需创建extra-deps,因此您可以随时删除。

_resource