【问题标题】:weird error with django-celery or pythondjango-celery 或 python 的奇怪错误
【发布时间】:2012-02-24 08:54:36
【问题描述】:

我在运行任务时遇到问题。我运行./manage celeryd -B -l info,它正确地将所有任务加载到注册表。

当任何任务运行时都会发生错误 - 任务启动,执行它的操作,然后我得到:

[ERROR/MainProcess] Thread 'ResultHandler' crashed: ValueError('Octet out of range 0..2**64-1',)
Traceback (most recent call last):
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/concurrency/processes/pool.py", line 221, in run
    return self.body()
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/concurrency/processes/pool.py", line 458, in body
    on_state_change(task)
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/concurrency/processes/pool.py", line 436, in on_state_change
    state_handlers[state](*args)
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/concurrency/processes/pool.py", line 413, in on_ack
    cache[job]._ack(i, time_accepted, pid)
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/concurrency/processes/pool.py", line 1016, in _ack
    self._accept_callback(pid, time_accepted)
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/worker/job.py", line 424, in on_accepted
    self.acknowledge()
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/worker/job.py", line 516, in acknowledge
    self.on_ack()
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/celery/worker/consumer.py", line 405, in ack
    message.ack()
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/kombu-2.1.0-py2.7.egg/kombu/transport/base.py", line 98, in ack
    self.channel.basic_ack(self.delivery_tag)
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/amqplib-1.0.2-py2.7.egg/amqplib/client_0_8/channel.py", line 1740, in basic_ack
    args.write_longlong(delivery_tag)
  File "/Users/jzelez/Sites/my_virtual_env/lib/python2.7/site-packages/amqplib-1.0.2-py2.7.egg/amqplib/client_0_8/serialization.py", line 325, in write_longlong
    raise ValueError('Octet out of range 0..2**64-1')
ValueError: Octet out of range 0..2**64-1

我还必须注意,这在我之前的 Lion 安装中有效,即使我使用一些测试代码创建了一个空白 virtualenv,当任务运行时它也会出现此错误。

这发生在 Python 2.7.2 和 2.6.4 上。

Django==1.3.1
amqplib==1.0.2
celery==2.4.6
django-celery==2.4.2

【问题讨论】:

  • 什么是delivery_tag?使用 pdb.pm() 进入堆栈跟踪并找出答案。

标签: python django macos celery


【解决方案1】:

homebrew install python 似乎有一些错误。我现在已经切换到原生 Lion 版本 (2.7.1) 并且可以正常工作。

【讨论】:

  • 另外你可以通过 brew upgrade 到 Python 2.7.3 来解决这个问题。
猜你喜欢
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2016-03-15
  • 1970-01-01
  • 2012-09-10
相关资源
最近更新 更多