Ich erstelle eine Sellerie-Aufgabe in einer Situation, in der Aufgabenproduzenten mehr sind als Konsumenten (Arbeiter). Jetzt, da meine Warteschlangen gefüllt sind und die Arbeiter auf FCFS-Art konsumieren, kann ich eine bestimmte Aufgabe (mit einer task_id) sofort ausführen?Sellerie - Gegeben eine Aufgaben-ID, führe die Aufgabe aus
für zB: -
Meine Aufgaben in der folgenden Art und Weise gefüllt werden. [1,2,3,4,5,6,7,8,9,0]
. Jetzt werden die Aufgaben vom nullten Index abgerufen. Nun entsteht eine Situation, in der ich vor allem Aufgabe 8 ausführen will. Wie kann ich das machen?
Der Arbeiter muss diese Aufgabe nicht ausführen (weil es Situationen geben kann, in denen ein Arbeiter bereits beschäftigt ist). Es kann direkt von der Anwendung ausgeführt werden. Wenn die Aufgabe abgeschlossen ist (entweder vom Worker oder direkt von der Anwendung), sollte sie aus der Warteschlange gelöscht werden.
Ich weiß, wie man eine Aufgabe (mit einer task_id) gewaltsam widerruft, aber wie kann ich eine Aufgabe mit einer ID ausführen?
Ich denke, dass Sie Abhilfe mit revoke Aufgabe von ID und schicken Sie es zurück an den Makler mit der höchsten Priorität (aber AFAIK ist dies nur für [RabbitMQ] (https://github.com/celery verwenden können/sellerie/issues/2635 # issuecomment-173597053)) –
Wenn ich eine Aufgabe widerrufe, kann ich die Parameter erhalten, die an diese Aufgabe übergeben werden? damit ich diese Aufgabe auf Anwendungsebene selbst ausführen kann. – PythonEnthusiast
Ich dachte, dass Sie AsyncResult von task_id abrufen können, und Argumente von ihm abrufen, dann widerrufen Sie diese Aufgabe und erstellen Sie eine neue –