Skip to main content
 首页 » 编程设计

python之celery.chord 给出 IndexError : list index out of range error in celery version 3. 0.19

2025年05月04日9qlqwjy

有没有人以前在 celery(Python 中的分布式任务 worker )中看到过这个错误?

Traceback (most recent call last): 
  File "/home/mcapp/.virtualenv/lister/local/lib/python2.7/site-packages/celery/task/trace.py", line 228, in trace_task 
    R = retval = fun(*args, **kwargs) 
  File "/home/mcapp/.virtualenv/lister/local/lib/python2.7/site-packages/celery/task/trace.py", line 415, in __protected_call__ 
    return self.run(*args, **kwargs) 
  File "/home/mcapp/lister/lister/tasks/__init__.py", line 69, in update_playlist_db 
    video_update(videos) 
  File "/home/mcapp/lister/lister/tasks/__init__.py", line 55, in video_update 
    chord(tasks)(update_complete.s(update_id=update_id, update_type='db', complete=True)) 
  File "/home/mcapp/.virtualenv/lister/local/lib/python2.7/site-packages/celery/canvas.py", line 464, in __call__ 
    _chord = self.type 
  File "/home/mcapp/.virtualenv/lister/local/lib/python2.7/site-packages/celery/canvas.py", line 461, in type 
    return self._type or self.tasks[0].type.app.tasks['celery.chord'] 
IndexError: list index out of range 

这个特定版本的 celery 是 3.0.19,并且在使用 celery 和弦功能时发生。我们认为我们的应用程序没有任何错误,因为 99% 的时间我们的代码都可以正常工作,但在较重的负载下会发生此错误。我们正试图查明这是我们应用程序中的实际错误还是 celery 错误,我们将不胜感激任何帮助。

请您参考如下方法:

这是当和弦标题中没有任务时发生的错误。 Celery 尝试使用 self.tasks[0] 访问 header 中的任务,这会导致索引错误,因为列表中没有任务。