0

Celery 2.6.0rc5を使用していますが、次のエラーが発生します。

[2012-06-22 23:01:42,016: ERROR/MainProcess] Unrecoverable error: TypeError('handle_event() takes exactly 3 arguments (1 given)',)
Traceback (most recent call last):
  File "/home/bmh/celery/celery/worker/__init__.py", line 350, in start
    component.start()
  File "/home/bmh/celery/celery/worker/consumer.py", line 369, in start
    self.consume_messages()
  File "/home/bmh/celery/celery/worker/consumer.py", line 435, in consume_messages
    readers[fileno](fileno, event)
  File "/home/bmh/kombu/kombu/transport/redis.py", line 636, in handle_event
    self._callbacks[queue](message)
  File "/home/bmh/kombu/kombu/transport/virtual/__init__.py", line 461, in _callback
    return callback(message)
  File "/home/bmh/kombu/kombu/messaging.py", line 482, in _receive_callback
    self.receive(decoded, message)
  File "/home/bmh/kombu/kombu/messaging.py", line 454, in receive
    [callback(body, message) for callback in callbacks]
  File "/home/bmh/celery/celery/worker/consumer.py", line 397, in on_task_received
    [callback() for callback in on_task_callbacks]
TypeError: handle_event() takes exactly 3 arguments (1 given)

ほんの少し前に git から昆布とセロリの両方をプルredis-serverし、ブローカーとして (2:2.2.12-1build1) がインストールされたUbuntu 12.04 LTS でこれを試しています。

私の設定(celeryconfig.py)は次のとおりです。

BROKER_URL = "redis://localhost:6379/0"
BACKEND_URL = BROKER_URL
CELERY_RESULT_BACKEND = "redis"
CELERY_REDIS_HOST = "localhost"
CELERY_REDIS_PORT = 6379
CELERY_REDIS_DB = 0

私のワーカー ( worker.py) は:

#!/usr/bin/python2.7
from celery import Celery

celery = Celery()

celery.config_from_object('celeryconfig')

@celery.task(ignore_result=True)
def atest(data):
    print "Got data: %s" % data

if __name__ == "__main__":
    celery.start()

でワーカーを実行し$ ./worker.py worker、Python シェルから次のようにワーカーを呼び出すと、次のようになります。

import worker
worker.atest("abc")

ワーカーは上記のエラーを報告し、より長いエラーを報告し、最終的にはワーカーが次のように終了します。

[2012-06-22 23:01:43,025: WARNING/MainProcess] File "/home/bmh/kombu/kombu/utils/eventio.py", line 95, in unregister
[2012-06-22 23:01:43,025: WARNING/MainProcess] self._epoll.unregister(fd)
[2012-06-22 23:01:43,025: WARNING/MainProcess] ValueError
[2012-06-22 23:01:43,025: WARNING/MainProcess] :
[2012-06-22 23:01:43,026: WARNING/MainProcess] I/O operation on closed epoll fd

ちなみに、$ ./worker.py shell「import kombu; kombu. version」を実行して実行すると、2.2.2 が報告され、これが最新バージョンであることがわかります。他の誰かがこれに遭遇したことも注目に値するかもしれませんが、昆布を更新することで解決したようです.

これは私が想像できる最も単純なセロリ プロジェクトであるため、私はセロリに完全に慣れていません。これは開発バージョンです。ここからどこへ行くべきか少し困惑しています。

読んでくれてありがとう。

4

1 に答える 1

2

ビリヤードの最新バージョンに更新することでこれを解決したようです:

$ git clone https://github.com/celery/billiard
$ cd billiard 
$ python setup.py develop
于 2012-06-23T00:32:03.547 に答える