1. ホーム
  2. python

[解決済み] Celery - 現在のタスクのタスクIDを取得する

2023-08-18 06:19:38

質問

タスクの中からtask_idの値を取得するにはどうしたらよいでしょうか。以下は私のコードです。

from celery.decorators import task
from django.core.cache import cache

@task
def do_job(path):
    "Performs an operation on a file"

    # ... Code to perform the operation ...

    cache.set(current_task_id, operation_results)

このアイデアは、タスクの新しいインスタンスを作るときに、そのインスタンスから task_id をタスクオブジェクトから取得します。そして、タスクが完了したかどうかを判断するために、タスクIDを使用します。I はしません。 によってタスクを追跡したいのです。 path の値によってタスクを追跡することを望みません。なぜなら、ファイルはタスクが完了した後に "clean up" され、存在するかもしれないし、存在しないかもしれないからです。

上記の例では、どのようにして current_task_id ?

どのように解決するのですか?

Celeryはタスクが受け入れる場合、いくつかのデフォルトのキーワード引数を設定します。 (**kwargs を使用するか、それらを具体的にリストすることによって、それらを受け入れることができます)

@task
def do_job(path, task_id=None):
    cache.set(task_id, operation_results)

デフォルトのキーワード引数の一覧は、こちらに記載されています。 http://ask.github.com/celery/userguide/tasks.html#default-keyword-arguments