Django 中带有 Redis 代理的 Celery:任务成功执行,但仍然存在太多持久的 Redis 键和连接

Celery with Redis broker in Django: tasks successfully execute, but too many persistent Redis keys and connections remain

我们的 Python 服务器 (Django 1.11.17) 使用 Celery 4.2.1 和 Redis 作为代理(我们使用的 pip redis 包是 3.0.1)。 Django 应用程序已部署到 Heroku,Celery 代理已使用 Heroku 的 Redis Cloud 附加组件设置。

我们的 Celery 任务绝对应该在一分钟内完成(中位完成时间约为 100 毫秒),但我们看到 Redis 键和连接的持续时间比这长得多(最多 24小时)。否则,任务正在正确执行。

可能发生了什么导致我们的 Redis 代理中出现这些持久键和连接?我们如何在 Celery 任务结束时清除它们?

这是发生这种情况的 Redis Labs 屏幕截图(所有任务都应该已完成,因此我们期望零键和零连接):

解决了我自己的问题:如果 CELERY_IGNORE_RESULT 配置变量设置为 True(我可以这样做,因为我没有使用我的任何 return 值任务),然后密钥和连接重新受到控制。

来源:Celery project documentation