Skip to main content
 首页 » 编程设计

python之django-celery 或 python 的奇怪错误

2025年05月04日37Terrylee

我在运行任务时遇到问题。我运行 ./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 

请您参考如下方法:

自制软件安装 python 似乎存在一些错误。我现在已经切换到原生的 Lion one (2.7.1),它可以正常工作。