我目前在 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):
我遇到了同样的问题,将最大并发数设置为 2 或 3 解决了这个问题。
在 procfile 中,在工作人员定义中添加-c 2
或-c 3
。
默认情况下,Celery 会将并发性设置为可用的 CPU 数。并发性定义了将生成的芹菜工作器的数量。