Ich habe eine schwere externe Bibliothek Klasse, die Zeit braucht, um zu initialisieren und viel Speicher verbraucht. Ich möchte es mindestens einmal pro Aufgabeninstanz erstellen.ist Sellerie-Aufgabe für jeden Worker-Prozess oder einmal pro App initialisiert?
class NlpTask(Task):
def __init__(self):
print('initializing NLP parser')
self._parser = nlplib.Parser()
print('done initializing NLP parser')
@property
def parser(self):
return self._parser
@celery.task(base=NlpTask)
def my_task(arg):
x = my_task.parser.process(arg)
# etc.
Sellerie beginnt 32 Worker-Prozesse, so würde ich den Druck "initializing ... done"
32 mal erwarten, wie ich, dass eine Taskinstanz übernehme für jeden Arbeiter geschaffen wird. Überraschenderweise bekomme ich den Druck einmal. Was passiert dort eigentlich? Vielen Dank.
das ist mein Punkt - ich würde einmal pro Arbeiter erwarten, und es scheint wie einmal pro Sellerie-Instanz. Ich habe die Frage bearbeitet – davka
@davka Aktualisierte Antwort. – ChillarAnand