首页 > 解决方案 > Heroku 上的 Celery、RabbitMQ 和 Django:达到内存限制

问题描述

在 Django 应用程序中使用 RabbitMQ 运行 Celery 任务时,我的 Heroku Dyno(爱好)目前已达到 RAM 内存限制。

我对 Celery 设置进行了一些尝试,但我一直在达到内存限制,并且我缺少有关内存优化的技术知识。我想知道我当前的设置是否可以做些什么来防止达到限制,或者是这里升级 Heroku Dyno 的唯一解决方案?

BROKER_URL = 'amqp://url'
BROKER_POOL_LIMIT = 5
CELERY_RESULT_BACKEND = None
CELERY_MAX_TASKS_PER_CHILD = 10
CELERY_MAX_MEMORY_PER_CHILD = 80000
Procfile:web: gunicorn app_name.wsgi worker: celery -A app_name worker -l info --without-heartbeat
Task.py file:@shared_task(acks_late=True, ignore_result=True)
def function_name(args):

标签: djangoherokurabbitmqcelery

解决方案


我遇到了同样的问题,将最大并发设置为 2 或 3 解决了这个问题。

在您的 procfile 中,添加-c 2-c 3在工作人员定义中。

默认情况下,Celery 会将并发设置为可用的 CPU 数量。并发定义了将产生的芹菜工人的数量。


推荐阅读