Celery 与 Django 中的 Redis 代理:任务成功执行,但仍有太多持久的 Redis 键和连接
Posted
技术标签:
【中文标题】Celery 与 Django 中的 Redis 代理:任务成功执行,但仍有太多持久的 Redis 键和连接【英文标题】:Celery with Redis broker in Django: tasks successfully execute, but too many persistent Redis keys and connections remain 【发布时间】:2019-06-11 03:33:10 【问题描述】:我们的 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 的屏幕截图(所有任务都应该已完成,因此我们希望零键和零连接):
【问题讨论】:
【参考方案1】:解决了我自己的问题:如果 CELERY_IGNORE_RESULT
配置变量设置为 True
(我可以这样做,因为我不使用任务的任何返回值),那么键和连接又回来了受到控制。
来源:Celery project documentation
【讨论】:
以上是关于Celery 与 Django 中的 Redis 代理:任务成功执行,但仍有太多持久的 Redis 键和连接的主要内容,如果未能解决你的问题,请参考以下文章
python测试开发django-157.celery异步与redis环境搭建