2016-09-06 9 views
3

セロリ3.1.23を使用します。セロリがプロセスを殺す

タスクのコードは非常に簡単です:

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

私は、このコマンドセロリを起動します。

セロリ-Aタスクワーカー--loglevel =情報--concurrency = 4 -n analize_text -Q analize.analize_text -Ofair

私は4 CPUを使用します。 セロリは定期的に労働者を殺し、代わりに新しいものを始めるという問題があります。新しい従業員はログに新しい番号を持ち、新しいPIDを持ちます。 ここに私のログですhttps://dpaste.de/N1Vk

なぜそれはそれですか?このバグですか?

答えて

1

これは、CELERY_MAX_TASKS_PER_CHILD、つまりリサイクルする前に作業員が完了するタスクの数によって異なりますが、デフォルトは無制限です。

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

だから、あなたのセロリの設定は、あなたの労働者がリサイクルなっているため、いくつかの低い数として設定し、この制限を持っている可能性があります。 詳しくはセロリstatsをご覧ください。

関連する問題