Code: Select all
from celery import shared_task
# external library that uses multiprocessing
from mp_module import mp_func
@shared_task
def long_task(n_proc):
mp_func(n_proc) # takes a long time, but uses multiprocessing to speed it up
- Celery parallele verteilte Aufgabe mit Multiverarbeitung
- Celery: Daemonische Prozesse dürfen keine Kinder haben
- Threaded-Modul mit Celery ausführen; Daemonische Prozesse dürfen keine untergeordneten Prozesse haben.
- Teilen Sie die Sellerie-Aufgabe in separate Aufgaben auf, damit der Sellerie-Prefork-Pool selbst eine Mehrfachverarbeitung der Aufgabe durchführen kann, die ursprünglich eine Funktion war.
- Verwenden Sie die Billard-Bibliothek anstelle von Multiprocessing innerhalb der Sellerie-Aufgabe.
- Verwenden Sie das Argument -P threads des Workers (d. h. celery worker -P threads).
Gibt es eine Möglichkeit, Celery so zu verwenden, dass es eine einzelne Aufgabe auf mehrere Worker aufteilen kann, wenn das Multiprocessing-Modul innerhalb dieser Aufgabe verwendet wird, ohne den Code umzugestalten? Wenn nicht, was wäre die einfachste Alternative für diese Art der hierarchischen Aufgabenverwaltung (Verwaltung mehrerer Aufgaben, die jeweils mehrere Prozesse ausführen)?
Mobile version