2016-09-06 7 views
3

Ich benutze Sellerie 3.1.23.Sellerie tötet Prozesse

Task-Code ist sehr einfach:

@app.task(bind=True, max_retries=None, default_retry_delay=settings.CELERY_RECONNECT_TIME) 
def analize_text(self, **kwargs): 
    print 'test' 
    return 1 

I Sellerie diesen Befehl starten:

Sellerie -A Aufgaben Arbeiter --loglevel = info --concurrency = 4 -n analize_text -Q analize.analize_text -Ofair

Also verwende ich 4 CPU. Das Problem ist, dass Sellerie regelmäßig Arbeiter tötet und stattdessen neue beginnt. Neuer Arbeiter hat neue Nummer im Logbuch und neue PID. Hier ist mein Protokoll https://dpaste.de/N1Vk

Warum macht es das? Ist dieser Fehler?

Antwort

1

Sie hängt von CELERY_MAX_TASKS_PER_CHILD ab, d. H. Anzahl der Aufgaben, die ein Mitarbeiter ausführen muss, bevor er recycelt wird. Der Standardwert ist unbegrenzt.

http://docs.celeryproject.org/en/latest/configuration.html#std:setting-CELERYD_MAX_TASKS_PER_CHILD

Also, Ihre Sellerie Konfiguration könnte diese Grenze als eine geringe Anzahl eingestellt werden müssen, damit Ihre Mitarbeiter recycelt zu werden. Sie können mehr Informationen in Sellerie stats sehen.