ypr*_*rez 6 python django celery django-celery django-1.6
将Django升级到1.6后,我的芹菜工人正在吃掉RAM.似乎为工作人员分配的内存不会在每项任务之后释放并增长.
相关设置:
# DB:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'somedb',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
}
}
# CELERY SETTINGS:
CELERY_RESULT_BACKEND = 'redis://'
BROKER_URL = 'redis://'
Run Code Online (Sandbox Code Playgroud)
相关软件包版本:
Django==1.6
celery==3.0.24
django-celery==3.0.23
billiard==2.7.3.34
kombu==2.5.16
redis==2.7.6
Run Code Online (Sandbox Code Playgroud)
发生在我的本地env(with DEBUG=False)手动运行worker以及芹菜与Upstart一起运行的暂存环境中.
更新:
autocommit=False没有成功.事实证明,内存泄漏并非直接由Django升级或Celery引起.
很多周围挖后,我发现,出人意料的是,芹菜工人内存泄漏是因为我升级的Django调试工具栏从0.9.4到0.11.0(这是需要的Django 1.6的兼容性).
仍然不知道究竟是什么导致了这个问题,或者为什么它只发生在芹菜工作者流程而不是应用服务器流程(Gunicorn).
django-debug-toolbar从已安装的应用程序和中间件中删除可解决此问题.至少是暂时的.