Celery: AttributeError: 'float' 对象没有属性 'items'

创建于 2018-11-15  ·  16评论  ·  资料来源: celery/celery

在运行 celery -A proj worker 抛出这个错误

[2018-11-15 12:02:53,607: CRITICAL/MainProcess] 不可恢复的错误:AttributeError("'float' 对象没有属性 'items'",)
回溯(最近一次调用最后一次):
文件“/user/lib/python3.6/site-packages/celery/worker/worker.py”,第 205 行,在开始
self.blueprint.start(self)
文件“/user/lib/python3.6/site-packages/celery/bootsteps.py”,第 119 行,在开始
step.start(父)
文件“/user/lib/python3.6/site-packages/celery/bootsteps.py”,第369行,在开始
返回 self.obj.start()
文件“/user/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,第317行,在开始
blueprint.start(self)
文件“/user/lib/python3.6/site-packages/celery/bootsteps.py”,第 119 行,在开始
step.start(父)
文件“/user/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,第 593 行,在开始
c.loop( c.loop_args())文件“/user/lib/python3.6/site-packages/celery/worker/loops.py”,第 91 行,在 asynloop 中下一个(循环)文件“/user/lib/python3.6/site-packages/kombu/asynchronous/hub.py”,第 354 行,在 create_loop 中cb( cbargs)
文件“/user/lib/python3.6/site-packages/kombu/transport/redis.py”,第 1040 行,在 on_readable
self.cycle.on_readable(fileno)
文件“/user/lib/python3.6/site-packages/kombu/transport/redis.py”,第 337 行,在 on_readable
chan.handlers类型
文件“/user/lib/python3.6/site-packages/kombu/transport/redis.py”,第 724 行,在 _brpop_read
self.connection._deliver(loads(bytes_to_str(item)), dest)
文件“/user/lib/python3.6/site-packages/kombu/transport/virtual/base.py”,第 983 行,在 _deliver
回调(消息)
_callback 中的文件“/user/lib/python3.6/site-packages/kombu/transport/virtual/base.py”,第 632 行
self.qos.append(message, message.delivery_tag)
文件“/user/lib/python3.6/site-packages/kombu/transport/redis.py”,第149行,附加
pipe.zadd(self.unacked_index_key, time(), delivery_tag) \
文件“/user/lib/python3.6/site-packages/redis/client.py”,第 2263 行,在 zadd 中
对于迭代项(映射)中的配对:
文件“/user/lib/python3.6/site-packages/redis/_compat.py”,第 123 行,在迭代项中
返回迭代器(x.items())
AttributeError: 'float' 对象没有属性 'items'

使用 Python 3.6.6,redis 3.0.0.post1

最有用的评论

不是芹菜问题 - 似乎是通过 pip 安装的 Redis 3.0.0.post1 的问题。

解决办法:用pip回滚redis: pip install redis==2.10.6

一切都对我有用了。

所有16条评论

今天早上我收到了一个非常相似的错误:

[2018-11-15 09:55:33,342: CRITICAL/MainProcess] Unrecoverable error: AttributeError("'float' object has no attribute 'iteritems'",)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/worker.py", line 205, in start
    self.blueprint.start(self)
  File "/usr/local/lib/python2.7/dist-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/local/lib/python2.7/dist-packages/celery/bootsteps.py", line 369, in start
    return self.obj.start()
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer/consumer.py", line 317, in start
    blueprint.start(self)
  File "/usr/local/lib/python2.7/dist-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer/consumer.py", line 593, in start
    c.loop(*c.loop_args())
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/loops.py", line 91, in asynloop
    next(loop)
  File "/usr/local/lib/python2.7/dist-packages/kombu/asynchronous/hub.py", line 354, in create_loop
    cb(*cbargs)
  File "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", line 1040, in on_readable
    self.cycle.on_readable(fileno)
  File "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", line 337, in on_readable
    chan.handlers[type]()
  File "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", line 724, in _brpop_read
    self.connection._deliver(loads(bytes_to_str(item)), dest)
  File "/usr/local/lib/python2.7/dist-packages/kombu/transport/virtual/base.py", line 983, in _deliver
    callback(message)
  File "/usr/local/lib/python2.7/dist-packages/kombu/transport/virtual/base.py", line 632, in _callback
    self.qos.append(message, message.delivery_tag)
  File "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", line 149, in append
    pipe.zadd(self.unacked_index_key, time(), delivery_tag) \
  File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 2263, in zadd
    for pair in iteritems(mapping):
  File "/usr/local/lib/python2.7/dist-packages/redis/_compat.py", line 94, in iteritems
    return x.iteritems()
AttributeError: 'float' object has no attribute 'iteritems'

Python 2.7,Redis 3.0.0.post1

不是芹菜问题 - 似乎是通过 pip 安装的 Redis 3.0.0.post1 的问题。

解决办法:用pip回滚redis: pip install redis==2.10.6

一切都对我有用了。

依赖固定是 celery 问题。 虽然看起来在这里固定
https://github.com/celery/celery/pull/5176

我们可以快速发布 4.2.2 来解决这个问题吗?

您可以在 Celery 之外固定依赖项,直到此问题得到修复。

Pipenv用户:添加redis = "~=2.10.6" _before_的celery在入门Pipfile

它已在昆布和芹菜大师中修复

我们可以获得 celery 的补丁版本吗?

不是芹菜问题 - 似乎是通过 pip 安装的 Redis 3.0.0.post1 的问题。

解决办法:用pip回滚redis: pip install redis==2.10.6

一切都对我有用了。

谢谢

我们可以获得 celery 的补丁版本吗?

补丁发布会很棒!!!

社区是否可以做些什么来使其早日成为可能? 可以看到,很多相关的项目都在提到这个问题,并确定了redis的版本。

我确实为kombu发布了一个补丁。 它应该可以解决问题。
请订阅我们存储库上的发布通知,而不是 ping 我们。

不是芹菜问题 - 似乎是通过 pip 安装的 Redis 3.0.0.post1 的问题。

解决办法:用pip回滚redis: pip install redis==2.10.6

一切都对我有用了。

辛苦了谢谢!!

它应该在最新的更新中修复:Celery 4.3.0 (kobu 4.5.0)。
您不需要回滚 redis 版本。

它应该在最新的更新中修复:Celery 4.3.0 (kobu 4.5.0)。
您不需要回滚 redis 版本。

没错,这在我的情况下有效。

你好,
我遇到问题 AttributeError: 'float' object has no attribute 'item'
执行回调函数时 callbacks = [checkpointer, earlystopper, lr_reducer, TensorBoardColabCallback(tbc)]
其中调用 /usr/local/lib/python3.6/dist-packages/tensorboardcolab/callbacks.py
我已经安装安装 redis==2.10.6 问题仍然存在。
我正在使用谷歌colab。

@dhanashri88 - 我不认为这是芹菜问题。 您的问题报告/回溯不完整,但看起来这是一个张量板问题。 请向他们的支持频道/邮件列表/github 问题寻求帮助。

此页面是否有帮助?
0 / 5 - 0 等级