擅长:python、mysql、java
<p>您可以使用<a href="http://celery.readthedocs.org/en/latest/userguide/signals.html" rel="nofollow noreferrer">celery signals</a>,在执行任务之前和之后都将调用已注册的函数,测量经过的时间很简单:</p>
<pre><code>from time import time
from celery.signals import task_prerun, task_postrun
d = {}
@task_prerun.connect
def task_prerun_handler(signal, sender, task_id, task, args, kwargs, **extras):
d[task_id] = time()
@task_postrun.connect
def task_postrun_handler(signal, sender, task_id, task, args, kwargs, retval, state, **extras):
try:
cost = time() - d.pop(task_id)
except KeyError:
cost = -1
print task.__name__, cost
</code></pre>