チュートリアルを正しく理解していれば、Celery サブタスクはタスクとほとんど同じAPIをサポートしますが、他の機能やプロセスに渡すことができるという利点があります。それが事実だった場合Celeryタスクとサブタスクの違いは何ですか?
は明らかに、セロリは単にサブタスクの代わりに、例えば(両方を保ちながらタスクを交換しているだろう、@app.task
デコレータはサブタスクに代わりのタスクに機能を変換しているだろうなど)。だから私は何かを誤解しているに違いない。
タスクは、サブタスクはできません。
セロリAPIがかなり変更されました。私の質問はバージョン3.1(現在、最新)に固有のものです。
編集:
私はドキュメントがサブタスクが他のタスクから呼び出されることを意図していると言う知っています。私の質問は、セロリがタスクを完全に取り除き、サブタスクをどこからでも使用できないようにすることです。彼らは仕事よりも強力な/厳密に、より柔軟であるように見える:
# tasks.py
from celery import Celery
app = Celery(backend='rpc://')
@app.task
def add(x, y):
# just print out a log line for testing purposes
print(x, y)
# client.py
from tasks import add
add_subtask = add.subtask()
# in this context, it seems the following two lines do the same thing
add.delay(2, 2)
add_subtask.delay(2, 2)
# when we need to pass argument to other tasks, we must use add_subtask
# so it seems add_subtask is strictly better than add
サブタスクは、タスクから実行されるセカンダリタスクだと思います。 http://stackoverflow.com/questions/6349371/celery-task-that-runs-more-tasks – Hussain
@Hussainはい、正確です。更新された質問を参照してください。 – max