Zgodnie z samouczkiem selerem dotyczącym real-time monitoring of celery workers można również programowo uchwycić zdarzenia wygenerowane przez pracowników i podjąć odpowiednie działania.Jak monitorować zdarzenia od pracowników w aplikacji Celery-Django?
Moje pytanie brzmi: jak mogę zintegrować monitor z przykładem w przykładzie this w aplikacji Celery-Django?
EDIT: Przykładowy kod w samouczku wygląda następująco:
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://[email protected]//')
my_monitor(celery)
Więc chcę uchwycić task_failed zdarzenia wysłane przez pracownika, a także uzyskać jego task_id jak poradnik pokazuje, aby uzyskać wynik dla to zadanie z zaplecza, które zostało skonfigurowane dla mojej aplikacji i dalej ją przetwarzać. Moim problemem jest to, że nie jest dla mnie oczywiste, jak uzyskać aplikację, ponieważ w projekcie django-selekcji nie jest dla mnie przejrzyste tworzenie biblioteki Selera.
Jestem również otwarty na wszelkie inne pomysły dotyczące przetwarzania wyników, gdy pracownik zakończył wykonywanie zadania.
myślę, że trzeba być nieco bardziej szczegółowe, jakie zdarzenia muszą przechwytywania? Czy masz przykład kodu? – danodonovan