El apio no libera memoria.

Parece que el apio no libera memoria después de terminar la tarea. Cada vez que una tarea finaliza, habrá una pérdida de memoria de 5m-10m. Así que con miles de tareas, pronto agotará toda la memoria.

BROKER_URL = 'amqp://user@localhost:5672/vhost' # CELERY_RESULT_BACKEND = 'amqp://user@localhost:5672/vhost' CELERY_IMPORTS = ( 'tasks.tasks', ) CELERY_IGNORE_RESULT = True CELERY_DISABLE_RATE_LIMITS = True # CELERY_ACKS_LATE = True CELERY_TASK_RESULT_EXPIRES = 3600 # maximum time for a task to execute CELERYD_TASK_TIME_LIMIT = 600 CELERY_DEFAULT_ROUTING_KEY = "default" CELERY_DEFAULT_QUEUE = 'default' CELERY_DEFAULT_EXCHANGE = "default" CELERY_DEFAULT_EXCHANGE_TYPE = "direct" # CELERYD_MAX_TASKS_PER_CHILD = 50 CELERY_DISABLE_RATE_LIMITS = True CELERYD_CONCURRENCY = 2 

Podría ser el mismo problema, pero no tiene una respuesta: ¿ RabbitMQ / Celery / Django Memory Leak?

No estoy usando django, y mis paquetes son:

 Chameleon==2.11 Fabric==1.6.0 Mako==0.8.0 MarkupSafe==0.15 MySQL-python==1.2.4 Paste==1.7.5.1 PasteDeploy==1.5.0 SQLAlchemy==0.8.1 WebOb==1.2.3 altgraph==0.10.2 amqp==1.0.11 anyjson==0.3.3 argparse==1.2.1 billiard==2.7.3.28 biplist==0.5 celery==3.0.19 chaussette==0.9 distribute==0.6.34 flower==0.5.1 gevent==0.13.8 greenlet==0.4.1 kombu==2.5.10 macholib==1.5.1 objgraph==1.7.2 paramiko==1.10.1 pycrypto==2.6 pyes==0.20.0 pyramid==1.4.1 python-dateutil==2.1 redis==2.7.6 repoze.lru==0.6 requests==1.2.3 six==1.3.0 tornado==3.1 translationstring==1.1 urllib3==1.6 venusian==1.0a8 wsgiref==0.1.2 zope.deprecation==4.0.2 zope.interface==4.0.5 

Acabo de agregar una tarea de prueba como, test_string es una cadena grande y todavía tiene pérdida de memoria:

 @celery.task(ignore_result=True) def process_crash_xml(test_string, client_ip, request_timestamp): logger.info("%s %s" % (client_ip, request_timestamp)) test = [test_string] * 5 

Fue esta opción de configuración la que hizo que mi trabajador no libere memoria.

 CELERYD_TASK_TIME_LIMIT = 600 

consulte: https://github.com/celery/celery/issues/1427

Este fue un problema en el apio que creo que está arreglado.

Consulte: https://github.com/celery/celery/issues/2927

Es posible que esté golpeando este problema en librabbitmq . Compruebe si Celery está utilizando librabbitmq>=1.0.1 .

Una solución simple para intentar es: pip install librabbitmq>=1.0.1 .

establece worker_max_tasks_per_child en tu configuración