Source

django-celery-about / source / request.rst

Full commit

コンテキスト:request

your_task.request:タスクの実行中コンテキスト

id:

実行されるTaskのユニークID

taskset:

タスクが所属するタスクセットのユニークID(タスクセットに所属する場合のみ)

args:

列挙引数

kwargs:

キーワード引数

retries:

現在のタスクがリトライされた回数。 0から始まります。

is_eager:

Worker では無く、ローカルプロセスでTaskが実行されるのであれば

logfile:

Worker が記録するファイル。

loglevel:

現在のログレベル。 pythonの :mod:`logging` モジュールで定義されています。

>>> import logging
>>> logging.DEBUG
10
hostname:

Taskを実行しているWorkerインスタンスのホスト名。

delivery_info:

メッセージ配送の付加情報。 このTaskをDeliver するのに使われた Exchange と Routing Key を含むマッピング情報。 Task.retry はこの情報をもとに同じ前回と同じ destination queue にTask を再送する。 この dict に含まれるキーは 使われる Message Broker によって違う。

@celery.task
def order(order_id):
    if order.request.retries < 10:
        try:
            fullfill.apply([order_id])
        except Exception,e:
            order.get_logger().error(str(e))
            order.retry(exc =e )
    else:
        report_error.apply([order_id,"max retries"])

celery.current_task : 現在のタスク

タスク内で実行

>>> from celery import current_task
>>> current_task
None