问题描述
我在一台机器上有两个 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.
我试过了
-
根据一些 stackoverflow 帖子将两个站点的 Kombu 降级到 4.5
-
并在每个芹菜文档 (https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/redis.html#broker-redis) 的
maxmemory=2GB
中设置maxmemory-policy=allkeys-lru
和redis.conf
;最初的设置是unlimited
内存和noeviction
的默认设置,两个版本的 kombu 都存在这些错误
当一个站点负载不足(即执行诸如上传一组图像并处理它们)而另一个站点空闲时,我仍然会收到这些错误。
有点奇怪的是,在一些使用 test-archive 的测试运行中,test-archive 不会有任何错误,而 archive 会显示这些错误,即使存档站点没有做任何事情。在使用 test-archive 的其他相同测试运行中,test-archive 会产生错误,而存档不会。
我知道这是 kombu/celery 中报告的错误,所以我想知道是否有人有解决此配置的方法。什么版本的 celery、kombu、redis 等似乎更常工作?我很高兴分享我的配置文件或日志文件,但我认为最好从问题陈述和我的设置开始讨论,看看还需要什么。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)