Received unregistered task of type ‘XXX’ Celery报错

[2018-11-06 10:23:48,346: DEBUG/MainProcess] basic.qos: prefetch_count->4
[2018-11-06 10:24:00,129: ERROR/MainProcess] Received unregistered task of type 'rub_jobs.tasktest'.
The message has been ignored and discarded.

Did you remember to import the module containing this task?
Or maybe you're using relative imports?

Please see
http://docs.celeryq.org/en/latest/internals/protocol.html
for more information.

The full contents of the message body was:
b'[[], {}, {"callbacks": null, "errbacks": null, "chain": null, "chord": null}]' (77b)
Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\celery\worker\consumer\consumer.py", line 565, in on_task_received
    strategy = strategies[type_]
KeyError: 'rub_jobs.tasktest'

上网初步搜索了下,未找到答案,于是查看celery源码,在报错文件("c:\program files\python36\lib\site-packages\celery\worker\consumer\consumer.py", line 565)中加入调试语句

然后运行celery,查看打印的消息

可以看到,我自己写的task没有celery读进去。

所以这个应该是路径的问题, 于是在装饰器@app.task中加入参数name,就可以被celery读取到了


@app.task(name='rub_jobs.tasktest')
def tasktest():
    print('task test,[%s],args=(%s)' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),None) )

可以看到,我的rub_jobs.tasktest已经被celery读取了。

猜你喜欢

转载自blog.csdn.net/u014108439/article/details/83782531