如何测量芹菜任务持续时间

2024-10-04 01:33:22 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种简单的方法来衡量一项芹菜任务被处理并成功完成所需的时间?有一个similar question,但第一个答案很难看,不幸的是,信号并没有像第二个答案所建议的那样为我召唤。在

flowerui有一个Runtime列,但它的API不允许获取批任务。在


Tags: 方法答案api信号时间建议runtime芹菜
2条回答

创建任务时,存储{task}id:start_time}的dict

我不知道你是怎么得到结果的,但是假设你做的是:

for task in tasks:
    result = task.get()

您可以将其更改为:

^{pr2}$

然后计算出你的长度

也许有更好的办法,但我正要出去过年。在

编辑:您可能需要处理已检索到的任务

任务事件可用于获取任务的运行时持续时间。有关详细信息,请参阅此link。“任务已发送”、“任务已接收”、“任务已启动”、“任务成功”、“任务失败”、“任务已拒绝”、“任务已吊销”、“任务重试”是celery支持的任务事件。为了度量任务持续时间,可以使用“task succeeded”事件。请在下面找到代码片段。在

    from celery import Celery
    redis = Redis(host='workerdb', port=6379, db=0)

    def my_monitor():
        app = Celery('vwadaptor', broker='redis://workerdb:6379/0',backend='redis://workerdb:6379/0')
        state = app.events.State()

        def announce_task_succeeded(event):
            state.event(event)
            task = state.tasks.get(event['uuid'])
            print "task runtime: ", task.runtime

        with app.connection() as connection:
            recv = app.events.Receiver(connection, handlers={
                    'task-succeeded': announce_task_succeeded, 
            })
            recv.capture(limit=None, timeout=None, wakeup=True)

    my_monitor()

相关问题 更多 >