2016-05-04 17 views
3

セロリタスクを使用してバックグラウンドでキャッシュを更新するキャッシュサーバーを実装しています。異なる引数(キャッシュキー)で呼び出すタスクは1つだけです。同じタスクがセロリで実行されないようにする方法は?

このサーバーをメインの本番サーバーに接続した後、同じキャッシュキーに対して毎秒数十の要求を受け取ります。セカンダリキュー内に同じキャッシュキーを持つ更新タスクが複数存在しないようにしたい(同時にキューとセットとして動作します)。

私はタスクを実行する前にそれを確認するために赤いセットを使用することを考えましたが、私はより良い方法を探しています。

+1

あなたの要件は本当に「セロリQUEUE内に同じキャッシュキーを持つ1つのタスクのみ」ですか、「同じキャッシュキーを同時に実行(キャッシュ更新)するタスクは1つだけですか」ですか? –

+0

@MuhammadTahirセロリ内に同じキャッシュキーを持つタスクは1つだけですQUEUE – Sina

+1

これが動作するかどうかを確認するhttp://docs.celeryproject.org/ja/latest/tutorials/task-cookbook.html#ensuring-a-task-is -only-executed-one-at-a-timeを実行します。これは、私が言及した2番目のケースと同じように動作しますが、あなたのバージョン(私が言及したもの)に対しても変更できます。 –

答えて

1

独自のロック機構を実装する方法は1つだけです。 公式ドキュメントにはnice example page.があります。 唯一の制限は想像力です。

これが役に立ちます。

関連する問題