如何修复接收未注册任务错误 - 芹菜



我正在尝试使用Ubuntu 16.04在Azure VM上运行Python 3.7.2的Celery(4.2.0(和RabbitMQ(3.7.14(建立一个定期任务。我能够启动节拍和工作线程,并看到消息从节拍踢到工作线程,但此时我遇到了这样的错误

[2019-03-29 21:35:00,081: ERROR/MainProcess] Received 
unregistered task of type 'facebook-call.facebook_api'.
The message has been ignored and discarded.
Did you remember to import the module containing this task?
Or maybe you're using relative imports?

我的代码如下:

from celery import Celery
from celery.schedules import crontab
app = Celery('facebook-call', broker='amqp://localhost//')
@app.task
def facebook_api():
    {function here}
app.conf.beat.schedule = {
    'task': 'facebook-call.facebook_api',
    'schedule': crontab(hour=0, minute =0, day='0-6'),
}

我正在使用包含所有代码的python文件的名称启动节拍和工作进程

celery -A FacebookAPICall beat --loglevel=info
celery -A FacebookAPICall worker --loglevel=info

同样,节拍过程开始,我可以看到消息已成功传递给工作线程,但无法弄清楚如何"注册"任务以便由工作线程处理。

我能够通过将应用程序从facebook-call重命名为与文件名称一致来解决此问题FacebookAPICall

以前: app = Celery('facebook-call', broker='amqp://localhost//'

后: app = Celery('FacebookAPICall', broker='amqp://localhost//'

通过阅读 Celery 文档,我不完全明白为什么应用程序的名称也必须是.py文件的名称,但这似乎可以解决问题。

相关内容

  • 没有找到相关文章

最新更新