首页 > 解决方案 > 使用 celery 和 redis 键的 kombu 中的不一致错误 '_kombu.binding.reply.celery.pidbox'

问题描述

我在一台机器上有两个 Django 站点(存档和测试存档)。每个都有自己的虚拟环境和不同的 celery 队列和守护进程,在 Ubuntu 18.04、Django 3.0.2、Redis v 4.0.9、celery v 4.3 和 Kombu v4.6.3 上使用 Python 3.6.9。该服务器有 16 GB 的 RAM,在负载下至少有 10 GB 的空闲空间并且交换空间最小。

我的日志中不断出现此错误:

kombu.exceptions.InconsistencyError: 
Cannot route message for exchange 'reply.celery.pidbox': Table empty or key no longer exists.
Probably the key ('_kombu.binding.reply.celery.pidbox') has been removed from the Redis database.

我试过了

当一个站点处于负载状态(即执行诸如上传一组图像并处理它们之类的操作)而另一个站点处于空闲状态时,我仍然会遇到这些错误。

有点奇怪的是,在一些使用 test-archive 的测试运行中,test-archive 不会有任何错误,而 archive 会显示这些错误,即使存档站点没有做任何事情。在使用 test-archive 的其他相同测试运行中,test-archive 将生成错误,而 archive 不会。

我知道这是 kombu/celery 中报告的错误,所以我想知道是否有人可以解决此配置的问题。哪些版本的 celery、kombu、redis 等似乎工作得更频繁?我很高兴分享我的配置文件或日志文件,但是我认为最好从问题陈述和我的设置开始讨论,看看还需要什么。

谢谢!

标签: python-3.xdjangorediscelerykombu

解决方案


推荐阅读