python-3.x - 使用 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.
我试过了
根据一些stackoverflow帖子将两个站点的Kombu降级到4.5
并在每个芹菜文档中设置
maxmemory=2GB
和( https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/redis.html#broker-redis);最初这些设置是内存的默认设置,并且两个版本的 Kombu 都存在这些错误maxmemory-policy=allkeys-lru
redis.conf
unlimited
noeviction
当一个站点处于负载状态(即执行诸如上传一组图像并处理它们之类的操作)而另一个站点处于空闲状态时,我仍然会遇到这些错误。
有点奇怪的是,在一些使用 test-archive 的测试运行中,test-archive 不会有任何错误,而 archive 会显示这些错误,即使存档站点没有做任何事情。在使用 test-archive 的其他相同测试运行中,test-archive 将生成错误,而 archive 不会。
我知道这是 kombu/celery 中报告的错误,所以我想知道是否有人可以解决此配置的问题。哪些版本的 celery、kombu、redis 等似乎工作得更频繁?我很高兴分享我的配置文件或日志文件,但是我认为最好从问题陈述和我的设置开始讨论,看看还需要什么。
谢谢!
解决方案
推荐阅读
- php - FOSUserBundle & Symfony 3.4:登录页面在生产模式下显示 404 页面
- laravel - 尝试在控制器中循环时,此页面无法正常工作错误
- reactjs - 如何从 react-draft-wysiwyg 中的 ContentState 的给定 JSON 数据更新编辑器状态?
- sql - replaceText 时间戳出错添加配额 Nifi
- java - TableRow style class not sticking to row when ordering TableView
- php - 动态调整宽度和高度 Cloudinary
- php - 截断双精度值(php)
- java - 实现一个接受两个不同类的参数的通用函数?
- wagtail - Wagtail 按用户权限隐藏/显示菜单项
- javascript - 如何使用javascript访问标签内单选按钮的值?