2011-07-26 8 views
5

celeryを使用すると、タスク内から最後に実行されたタスクがいつチェックされるのでしょうか?セロリ:タスクの最後の実行時間へのアクセス?

「最後に実行してからすべてを取得する」を実装したいと思います。最後に実行されたタイムスタンプを自分自身で追跡したり、うまくいけばセロリからアクセスできるようにすることができます。

これは、違いがある場合は、djangoプロジェクト内からのものです。

答えて

3

デフォルトでは、セロリにはタスクの結果が永続的に保存されません。ビートモードで実行している場合、クリーンタスクの結果と実行情報に対してクリーンプロセスが実行されます。 は、あなたがどんな結果で、

def after_return(self, status, retval, task_id, args, kwargs, einfo): 
    #exit point for context managers 
    self.taskLogger.__exit__(status, retval, task_id, args, kwargs, einfo) 

この方法は、タスクが終了するたびに呼び出されたafter_returnあなたのタスクでオーバーライド方法をこれを行うことができ、私はあなたが店のためのすべての最後の実行日をNoSQLのを使用することであることを示唆したいですタスクがSUCCESSで終了したときにのみ日付を保存できるステータスをチェックするか、ニーズに最も適した動作を実装します。

1

django-celeryを使用している場合、last_run atはモデルに保存されます。通常のdjango ORMを使用して、タスク名を使用してPeriodicTaskモデルをフィルタリングします。

from djcelery.models import PeriodicTask 

last_run = PeriodicTask.objects.only('last_run_at').get(task='TASK_NAME_HERE').last_run_at 
+0

これは定期的な作業にのみ有効です。 – navyad

関連する問題