芹菜工人不启动:"Module 'proj' has no attribute 'celery'"



我正在使用Django、Celery和RabbitMQ。当我从顶级目录运行celery -A FlakeFinder worker -l INFO时,我会得到错误:

Usage: celery [OPTIONS] COMMAND [ARGS]...
Error: Invalid value for '-A' / '--app': 
Unable to load celery application.
Module 'flakefinder' has no attribute 'celery'

如果我运行celery -A FlakeFinder.celeryApp worker -l INFO,我会得到紫色文本中的错误:

ModuleNotFoundError: No module named 'celery.backends.amqp'

我真的不知道从这里到哪里去。我怎样才能让芹菜工人运转起来?

我的文件夹结构如下:

. (FlakeFinder)
├── FlakeFinder
│   ├── __init__.py
│   ├── asgi.py
│   ├── celeryApp.py
│   ├── secrets.py
│   ├── settings.py
│   ├── tasks.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── license.txt
├── manage.py
├── scraping
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── scraper.py
│   ├── tests.py
│   └── views.py

celeryApp.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from celery.schedules import crontab  # scheduler
# default django settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'FlakeFinder.settings')
app = Celery('FlakeFinder')
app.conf.timezone = 'UTC'
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
app.conf.beat_schedule = {
# executes every 1 minute
'scraping-task-three-hr': {
'task': 'scraping.tasks',
'schedule': crontab()
}
}

任务.py

from scraping.scraper import *
from celeryApp import app

@app.task
def update_snow_locs():
...

尝试将"celeryApp.py"的名称更改为"celery.py">

我不知道如何度过难关。我通过降级到4.4.2版本解决了这个问题。

AMQP结果后端计划在4.0版本中弃用,并在v5.0版本中删除。请使用RPC后端或持久后端。

错误似乎很明显。

from celery import Celery
from celery import task  
celery = Celery('tasks', broker='amqp://guest@localhost//') #!
import os
os.environ[ 'DJANGO_SETTINGS_MODULE' ] = "proj.settings"
@task()
def add_photos_task( lad_id ):
...

这就是我在网上找到的解释——";忘记在任务中创建一个芹菜对象;但这并不意味着我是芹菜模块的专家。

相关内容

最新更新