Celery に署名が必要なのはなぜですか? 質問する

Celery に署名が必要なのはなぜですか? 質問する

Django Python プロジェクトで Celery 4.1 を使い始めて、署名に出会いました。

の中にドキュメンテーションそれは次のように言います:

呼び出しガイドで、タスクの遅延メソッドを使用してタスクを呼び出す方法を学びました。多くの場合、これで十分ですが、タスク呼び出しのシグネチャを別のプロセスに渡したり、別の関数の引数として渡したりする必要がある場合もあります。

signature() は、単一のタスク呼び出しの引数、キーワード引数、および実行オプションを、関数に渡したり、シリアル化してネットワーク経由で送信したりできるようにラップします。

いくつかの例で使用されているのを見ますが、いつ、なぜ使用するのか、また、どの問題を解決するのかはよくわかりません。誰かこれを素人に説明してもらえませんか?

ベストアンサー1

ワークフローを作成するためにチェーンと一緒に使用される署名。「.s」は「.signature」の略語です。「.s」を使用すると、フロント タスクの結果または戻り値が次のタスクに渡されることを意味します。「署名」の反対は「不変署名」で、すべてのタスクは独立しています。例 (署名):

res = chain(add.s(2,2), add.s(4), add.s(8))
res().get()
>> 16

例(不変署名):

res = chain(add.si(2,2)|add.si(4,4)|add.si(8,8))()
res.get()
>>16
res.parent.get()
>>8
res.parent.parent.get()
>>4

おすすめ記事