KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
According to the celery tutorial regarding real-time monitoring of celery workers , one can also programmatically capture the events produced by the workers and take action accordingly. My question is how can I integrate a monitor as the one in this example, in a Celery-Django application? EDIT: The code example in the tutorial looks like: from celery import Celery def my_monitor(app): state = app.events.State() def announce_failed_tasks(event): state.event(event) task_id = event['uuid'] print('TASK FAILED: %s[%s] %s' % ( event['name'], task_id, state[task_id].info(), )) with app.connection() as connection: recv = app.events.Receiver(connection, handlers={ 'task-failed': announce_failed_tasks, 'worker-heartbeat': announce_dead_workers, }) recv.capture(limit=None, timeout=None, wakeup=True) if __name__ == '__main__': celery = Celery(broker='amqp://guest@localhost//') my_monitor(celery) So I want to capture task_failed event sent by the worker, and to get its task_id like the tutorial shows, to get the result for this task from the result-backend that was configured for my application and process it further. My problem is that it is not obvious to me how to get the application, as in a django-celery project it is not transparent to me the instantiation of Celery library. I am also open to any other idea as to how to process the results when a worker has finished executing a task.
Tags (comma-separated)
Save Edits
Cancel