gpt4 book ai didi

python - 为什么 Celery 不在排队的消息中嵌入时间戳?

转载 作者:行者123 更新时间:2023-12-02 04:39:51 24 4
gpt4 key购买 nike

我试图获取 Celery 排队任务的等待时间。据我所知,我可以通过 Celery 工作人员发布的事件流来完成此操作。出于好奇,为什么一个简单的时间戳没有嵌入到排队的任务中?这与分布式系统设计有关吗?

注意: celery ==3.0.12

最佳答案

您不能依赖分布式系统中的物理墙时间,因此这样的字段不会很有用。

对于事件流,这是不同的,因为 task-startedtask-succeeded 时间戳都来自相同的时钟源。

就是说,有时候近似值很有用,所以您可以添加这个自己的信息:

add.apply_async((4, 4), headers={'time_sent': time.time()})

您可以访问任务中的消息 header (但请注意,这需要 Celery 3.1):

@app.task(bind=True)
def add(self, x, y):
print('Approximate queue time: {0}'.format(
time.time() - self.request.headers.get('time_sent', 0),
))
return x + y

关于python - 为什么 Celery 不在排队的消息中嵌入时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com