Django 1.6和Celery 3.0内存泄漏

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一起运行的暂存环境中.


更新:

  1. 尝试设置autocommit=False没有成功.
  2. 可能是它与Django版本升级无关,但是对于某些设置或第三方软件包,我必须升级才能切换到1.6.

ypr*_*rez 7

事实证明,内存泄漏并非直接由Django升级或Celery引起.

很多周围挖后,我发现,出人意料的是,芹菜工人内存泄漏是因为我升级的Django调试工具栏0.9.40.11.0(这是需要的Django 1.6的兼容性).

仍然不知道究竟是什么导致了这个问题,或者为什么它只发生在芹菜工作者流程而不是应用服务器流程(Gunicorn).

django-debug-toolbar从已安装的应用程序和中间件中删除可解决此问题.至少是暂时的.