【发布时间】:2020-09-15 06:19:48
【问题描述】:
我目前正在利用 celery 执行定期任务。我是芹菜新手。我有两个工人运行两个不同的队列。一种用于慢速后台作业,另一种用于用户在应用程序中排队的作业。
我在 datadog 上监控我的任务,因为这是确认我的工人正常运行的简单方法。
我要做的是在每个任务完成后,记录任务在哪个队列上完成。
@after_task_publish.connect()
def on_task_publish(sender=None, headers=None, body=None, **kwargs):
statsd.increment("celery.on_task_publish.start.increment")
task = celery.tasks.get(sender)
queue_name = task.queue
statsd.increment("celery.on_task_publish.increment", tags=[f"{queue_name}:{task}"])
以下功能是我在研究 celery 文档和一些 StackOverflow 帖子后实现的,但它没有按预期工作。我得到了第一个 statsd 增量,但剩余的代码没有执行。
我想知道是否有一种更简单的方法可以在每个任务完成后/内部检查哪个队列处理了该任务。
【问题讨论】:
标签: python django heroku celery datadog