禁用Celery的Django调试

Cer*_*rin 13 python django celery

是否可以仅为Django中的特定应用设置DEBUG = False?启用调试时,Celery具有已知的内存泄漏.我有一个开发服务器,我希望Celery作为服务运行,无需调试,因此它不会泄漏内存,但我希望我的Django应用程序的其余部分使用调试,以便在测试时显示错误.

ask*_*sol 33

Celery没有内存泄漏,这就是Django的工作方式:

当启用DEBUG时,Django将每个执行的SQL语句附加到django.db.connection.queries,这将在长时间运行的进程环境中无限制地增长.

我想你可以使用像这样的黑客:

if "celeryd" in sys.argv:
    DEBUG = False
Run Code Online (Sandbox Code Playgroud)

  • 你会对manage.py进行修改吗? (2认同)
  • 不,在你的settings.py中做 (2认同)

lad*_*orm 5

@asksol 的 hack 不是为我做的,我必须做

if "celery" in sys.argv[0]:
    DEBUG = False
Run Code Online (Sandbox Code Playgroud)

因为 sys.argv 就像 ['/path/to/celery', 'worker', '-A', 'app']

我使用 python 3.6 和 celery 4