2013-10-05 73 views
3

我有使用芹菜的django應用程序。 芹菜與兔子作爲經紀人。 當我在任務中使用redis時,芹菜返回WorkerLostError。os上的芹菜WorkerLostError x 10.8.5

命令啓動芹菜: 蟒manage.py celeryd -BE --loglevel = INFO

的代碼示例:

class TestTask(Task): 
    def run(self): 
     rds = redis.Redis(db=0) 
     rds.set('test', '11') 
     val = rds.get('test') 
     print val 

輸出:

python(1674) malloc: *** error for object 0x7fdaf125e908: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 
[2013-10-05 15:40:51,012: ERROR/MainProcess] Task mysites.task_tech.TestTask[4cc3053d-4e9c-4701-97ea-4a9e7ba3e902] raised exception: WorkerLostError('Worker exited prematurely (exitcode: -6).',) 
Traceback (most recent call last): 
    File "/Users/user/Envs/TestEnv/lib/python2.7/site-packages/billiard/pool.py", line 930, in _join_exited_workers 
    lost_ret,)) 
WorkerLostError: Worker exited prematurely (exitcode: -6). 

要求:

Django==1.4.1 
celery==3.0.11 
amqp==1.0.13 
amqplib==1.0.2 
billiard==2.7.3.32 
celery==3.0.11 
django-celery==3.0.11 

的Redis:

$ redis-server --version 
Redis server v=2.6.14 sha=00000000:0 malloc=libc bits=64 

RabbitMQ的版本 - 3.1.4

OSX版本 - 10.8.5

爲什麼我WorkerLostError?有任何想法嗎?

UPD: 在debian,ubuntu和其他一些linux系統上,我沒有這個問題。僅在osx上有問題。

+0

python中的malloc錯誤很可能是編譯後的.so和python版本未對齊的結果。你最近升級了python而沒有刷新軟件包? –

回答

0

史詩!

我在同一個文件中使用我的自定義方法init另一個任務。我不知道爲什麼,但重命名類初始化(或刪除)決定了這個問題。