[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读取了。