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讀取了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章