8 Stimmen

Dynamisches Hinzufügen/Entfernen von Threads zum Worker-Pool in celery

Wie füge ich dem aktuellen Multiprocessing-Pool aus einer Aufgabe heraus weitere Threads hinzu (und entferne Threads) (d. h. celeryd wurde mit CELERYD_CONCURRENCY = 10 ausgeführt, aber ich möchte es on-the-fly auf CELERYD_CONCURRENCY = 15 ändern)?

Es gibt eine Funktion namens celery.concurrency.processes.TaskPool.Pool.grow aber ich habe keine Ahnung, wie ich diese Funktion aus einer laufenden Aufgabe heraus aufrufen kann oder ob es die richtige Funktion dafür ist.

1voto

Dima Tisnek Punkte 10230

Lesen Sie die Quelle:

https://github.com/ask/celery/blob/master/celery/concurrency/processes/__init__.py

gibt es beides grow() et shrink() obwohl letzteres ein wenig merkwürdig erscheint.

müssen Sie einen Verweis auf den Pool irgendwo halten, wenn Sie nur einen Pool haben, halten Sie es global.

caveat poster: wenn Multiprozessorbetrieb bedeutet eigentlich laufen mehrere getrennte Prozesse Wenn Sie versuchen, zu schrumpfen oder zu wachsen, befinden Sie sich möglicherweise bereits in einem Kindschaftsprozess, und das wird natürlich nicht funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X