1
Celery 4.0.2を使用してタスク間に大きなリソースファイルをキャッシュしようとしています。Celery Task instanciation cache
ドキュメンテーションで見ると、タスクのキャッシュ部分に手が届きます。
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
どのように私はそのメモリを解放するか、それはすべての関連タスクの実行後に期限切れにすることができますか?
再生していただきありがとうございます。私はこれを試みましたが、これは各プロセスのための新しいリソースを作成しています。私は同じ基本タスクを持つすべてのプロセスのために何らかの種類の共有オブジェクトを用意しようとしていました。 – PaytoN