In base al tutorial di sedici su real-time monitoring of celery workers, è possibile anche acquisire a livello di codice gli eventi prodotti dagli operatori e agire di conseguenza.Come monitorare gli eventi da lavoratori in un'applicazione Celery-Django?
La mia domanda è: come posso integrare un monitor come quello nell'esempio this in un'applicazione Celery-Django?
EDIT: L'esempio di codice nel tutorial si presenta come:
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)
quindi voglio catturare evento task_failed inviato dal lavoratore, e per ottenere il suo task_id come gli spettacoli del tutorial, per ottenere il risultato questa attività dal risultato-backend che è stato configurato per la mia applicazione e lo elabora ulteriormente. Il mio problema è che non è ovvio per me come ottenere l'applicazione, poiché in un progetto di django-sedano non è trasparente per me l'istanziazione della libreria di Celery.
Sono inoltre aperto a qualsiasi altra idea su come elaborare i risultati quando un operatore ha terminato l'esecuzione di un'attività.
penso che dovrete essere un po 'più specifico, quali eventi hanno bisogno di catturare? Hai qualche codice di esempio? – danodonovan