セロリはすべてのタスクで自分自身をフォークしますか? 私はこのようなものを持っているとしましょう:
obj = object()
@celery.task
def print_id():
print id(obj)
#another server
print_id.delay()
print_id.delay()
print_id.delay()
タスクを数回 (セロリを再起動せずに) 呼び出すとき、ID は常に同じですか?
セロリはすべてのタスクで自分自身をフォークしますか? 私はこのようなものを持っているとしましょう:
obj = object()
@celery.task
def print_id():
print id(obj)
#another server
print_id.delay()
print_id.delay()
print_id.delay()
タスクを数回 (セロリを再起動せずに) 呼び出すとき、ID は常に同じですか?
場合によります。同時実行に関するドキュメントを参照してください。
で少なくとも 2 つのワーカーを設定すると、同じままではなくなりますmultiprocessing
。id
1 つのノードを使用し、X
タスクの実行後にそれを再起動しても (セロリ ワーカーのオプション) id
、同じままではありません。
基本的に、コード内でそれに依存するべきではありません。Celeryを介してタスクを実行する目的は、タスクを分散することです。
なぜそのような質問をしてもいいですか?それが必要なユースケースはありますか?