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

时间:2019-01-17 00:26:15

标签: python django heroku redis celery

我们的Python服务器(Django 1.11.17)使用带有Redis的Celery 4.2.1作为代理(我们使用的pip redis软件包是3.0.1)。 Django应用程序已部署到Heroku,而Celery经纪人是使用Heroku的Redis Cloud插件设置的。

我们必须完全在一分钟内完成Celery任务(完成时间中位数约为100毫秒),但是我们发现Redis密钥和连接的持久性要长得多(长达24小时) 。否则,任务将无法正确执行。

会发生什么,导致我们的Redis代理中的这些持久键和连接持久化?当Celery任务完成时,我们如何清除它们?

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

Redis Labs screenshot

1 个答案:

答案 0 :(得分:0)

解决了我自己的问题:如果将CELERY_IGNORE_RESULT配置变量设置为True(之所以能够这样做是因为我没有使用任务中的任何返回值),那么这些键并且连接又重新得到控制。

来源:Celery project documentation