python - os x 10.8.5 上的 Celery WorkerLostError

标签 python django redis celery billiards

我有使用 celery 的 Django 应用程序。 celery 作为经纪人与兔子一起工作。 当我在任务中使用 redis 时, celery 返回 WorkerLostError。

启动 celery 的命令: python 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?有什么想法吗?

更新: 在 debian、ubuntu 和其他一些 linux 系统上,我没有这个问题。仅在 osx 上有问题。

最佳答案

史诗!

我在同一个文件中有另一个任务使用我的自定义方法 init。我不知道为什么,但是重命名类 init(或删除)决定了这个问题。

关于python - os x 10.8.5 上的 Celery WorkerLostError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19197540/

相关文章:

python - 为什么f(x)对 'x'的导数是 'x'而不是pytorch中的1?

django - 测试django模型清理方法

python - 验证 get 请求中的表单,如何?

python - 外键在 django 中不起作用

python - 对于以下用例,我应该使用 Redis 还是 Neo4J?

redis - Spark : How to send arguments to Spark foreach function

python - 识别仅由数字组成的字符串

python - 用Python高效存储和访问网页

node.js - 使用redis缓存关系数据

python - 从图像轮廓或边缘检测弧