mrk*_*han 2 python distributed celery
我试图获取 Celery 排队任务的等待时间。据我所知,我可以通过 Celery 工作人员发布的事件流来做到这一点。好奇的是,为什么队列任务中没有嵌入简单的时间戳?这与分布式系统设计有关吗?
注意:芹菜==3.0.12
您不能依赖分布式系统中的物理墙时间,因此这样的字段不会很有用。
对于事件流,这是不同的,因为task-started和task-succeeded时间戳都来自同一时钟源。
也就是说,有时近似值可能很有用,因此您可以自己添加此信息:
add.apply_async((4, 4), headers={'time_sent': time.time()})
Run Code Online (Sandbox Code Playgroud)
您可以访问任务中的消息标题(但请注意,这需要 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |