2015-06-26 16 views
8

Desidero configurare un sistema di pubblicazione/sottoreport di rete, ma deve anche essere in grado di eseguire attività in modo asincrono. Ho provato a prendere il sedano per fare il sollevamento pesi, ma mi sento come se stessi cercando di spremere un sacco di cose solo per farlo funzionare.Celery come eventi pub/sub in rete

Ho due macchine (ingresso e uscita) e hanno entrambi accesso a RabbitMQ. Mi piacerebbe avere un programma principale per dare il via ad un loop che aspetta input (movimento rilevato da una webcam). Ho impostato che input_machine avvia main.py che avvia un'attività di sedici che viene monitorata da un worker sulla input_machine subbed alla coda "input". Questa attività esegue un ciclo True while finché non viene rilevato un input, che quindi chiama un altro nome ('project.entered_room' che non fa nulla) attività di sedan nella coda "output".

Nel frattempo su output_machine, ho un'istanza di celery che guarda la coda "output" con un'attività denominata ('project.entered_room' che risponde a qualcuno che entra nella stanza).

Quindi, quando viene rilevato un input su input_machine, un'attività viene eseguita sulla macchina di output. Riesco a farlo funzionare ma a riscontrare numerosi problemi di importazione e altri grattacapi. C'è un modo più semplice per realizzare questo? Sto andando tutto sbagliato? Sto usando gli strumenti sbagliati?

Ho esaminato una serie di strutture diverse, compresi i circuiti e il twistato. Twisted è molto complesso e mi sento come se stessi colpendo un chiodo con un martello pneumatico.

risposta

0

Celery è solo un task manager.

RabbitMQ è il broker dei messaggi. Implementerei un canale RabbitMQ tra le due macchine e uso pubblicare/sottoscrivere per gestire il tuo input.

Forse questo link può essere d'aiuto