Wir haben einen Server mit Selleriearbeitern und einer Redis-Warteschlange. Die Aufgaben sind auf diesem Server definiert.
Ich muss diese Aufgaben von einem Remote-Computer aufrufen können.
Ich weiß, dass es mit send_task
getan wird, aber ich habe immer noch nicht herausgefunden, wie? Wie erkläre ich send_task
, wo die Warteschlange ist? Wo gebe ich Verbindungsparameter (oder was benötigt)? Ich habe stundenlang suchen und alles, was ich finden kann, ist dies:Sellerie - Wie Task von Remote-Maschine senden?
from celery.execute import send_task
send_task('tasks.add')
Nun, das bedeutet, dass ich celery
auf meiner Berufung Maschine benötigen auch. Aber was muss ich noch einrichten?
Ich hatte kürzlich ein ähnliches Problem, bei dem der Aufruf von send_task korrekt war, die Aufgabe wurde jedoch vom Server nicht gefunden. Ich habe den Fehler "Nicht registrierte Aufgabe vom Typ empfangen ..." erhalten. Um dies zu lösen, fügen Sie in Ihren Aufgabendefinitionsdecoratoren das Argument 'name' hinzu. Beispiel kann [hier] gefunden werden (https://gist.github.com/johnpaulhayes/8403108) – johnpaulhayes
OK, das ist toller Mann ... jetzt ein echter Test. Wie verwenden Sie einen Rückruf damit, damit ich den tatsächlichen Wert von der Aufgabe erhalten kann ?? – chuckjones242
Etwas, das mich für ein paar Stunden abwarf, war, dass ich definieren musste, welche Warteschlange mein produzierendes Skript die "Jobs" stellte. endete mit 'sellery.send_task (' tasks.the_remote_task_name ', ([argumente, ...]), queue =' name_of_queue ') von diesem [link] (https://www.marshut.net/ipwtin /sending-tasks-from-a-machine-and-running-sellery-workers-on-another-machine.html) – lukik