0

私はRabbitMQでセロリを使用しています。

私のユースケースでは、特定のノードで実行する必要があるメッセージを持つインスタンスが必ずありますが、特定のキューの場合は、元のサーバーでのみ実行する必要があります。これは、ローカルのみのファイルで動作するためです。

@celery.task
def calculate_hash(filename):
    target = Models.objects.get(filename=filename)
    hasher = hashlib.md5()
    with open(filename, "rb") as f:
        chunk = f.read(64 * 1024)
        while len(chunk) > 0:
            hasher.update(chunk)
            chunk = f.read(64 * 1024)
    target.hash = hasher.hexdigest()
    target.save()

明らかに、上記のタスクはfilename実際に存在する場所にのみ関連しており、同時に複数のノードに存在する可能性は低いです。

特定のタスクがローカルでのみ実行されるように指定する方法はありますか?

4

1 に答える 1