Abbiamo un server che esegue i lavoratori del sedano e una coda Redis. Le attività sono definite su quel server.
Devo essere in grado di chiamare queste attività da una macchina remota.
So che è stato fatto usando send_task
ma non ho ancora capito come? Come si dice a send_task
dove si trova la coda? Dove posso passare i parametri di connessione (o qualsiasi altra cosa necessaria)? Ho cercato per ore e tutto quello che posso trovare è questo:Celery - Come inviare attività dalla macchina remota?
from celery.execute import send_task
send_task('tasks.add')
Bene, questo significa che ho bisogno celery
sulla mia macchina chiamata pure. Ma cos'altro ho bisogno di impostare?
Recentemente ho avuto un problema simile in cui la chiamata send_task era corretta, tuttavia l'attività non è stata trovata dal server. Ho ricevuto un messaggio di errore "Ricevuta attività non registrata di tipo ...". Per risolvere questo, nel tuo decoratore di definizioni di compiti aggiungi l'argomento 'nome'. Esempio può essere trovato [qui] (https://gist.github.com/johnpaulhayes/8403108) – johnpaulhayes
OK, questo è un grande uomo ... ora un vero test. Come si utilizza una richiamata con quella in modo da poter ottenere il valore effettivo restituito dall'attività ?? – chuckjones242
Qualcosa che mi ha buttato fuori per qualche ora era che avevo bisogno di definire quale coda la mia sceneggiatura produceva i "lavori". finito con 'celery.send_task ('tasks.the_remote_task_name', ([argomenti, ...]), queue = 'name_of_queue')' ottenuto da questo [collegamento] (https://www.marshut.net/ipwtin /seguendo-task-da-a-machine-and-running-celery-workers-on-another-machine.html) – lukik