芹菜问题![Flask+芹菜+redis][20210607 12:31:18849:错误/MainProcess]收到类型为的未注册任务

2024-09-30 01:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我得到的错误代码:

[2021-06-07 12:27:52,535: ERROR/MainProcess] Received unregistered task of type 'fashion.views.json_update.json_update'.
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'[[2], {}, {"callbacks": null, "errbacks": null, "chain": null, "chord": null}]' (78b)
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/celery/worker/consumer/consumer.py", line 581, in on_task_received
    strategy = strategies[type_]
KeyError: 'fashion.views.json_update.json_update'

我一直在尝试使用Flask, Flask-sqlAlchemy, Blueprint, Application Factory制作API。在过去的三天里,我一直在尝试添加^{,但它不起作用。我想这主要是因为{}和{}

我的工作目录如下所示:

# These are the folders and files that I currently using celery for.

-- back
  -- fashion
    -- __init__.py
    -- models.py
    -- address_format.py
    -- error_code.py
    ...
    -- views
       -- cardgame.py
       -- json_update.py
       ...

整个过程是这样的: 如果前端从cardgame.py发送对“maincard”API的POST请求,它将从json_update.py调用json_update函数(生成json文件),同时将一些信息从前端保存到mySQL db。 __init__.py有芹菜实例

我的__init__.py看起来像:

from flask import Flask
import logging
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from datetime import datetime, timedelta
from flask_jwt_extended import (JWTManager, jwt_required, create_access_token,
                                get_jwt_identity, unset_jwt_cookies, create_refresh_token)
import pymysql
from flask_cors import CORS
# import config

# --------------------------------------------------------------------------- #
from celery import Celery

celery = Celery(__name__, broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
# --------------------------------------------------------------------------- #

db = SQLAlchemy()
migrate = Migrate()

def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:@localhost:3306/fashion'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
     
    # ORM
    db.init_app(app)
    migrate.init_app(app, db)

    CORS(app, supports_credentials=True)
    from .views import auth, main, cardgame, share, bookmark, details
    app.register_blueprint(cardgame.bp)
    ...

    jwt = JWTManager(app)
    bcrypt = Bcrypt(app)

    return app

models.py

from fashion import db
from sqlalchemy import ForeignKey, DateTime, Column, Integer, String, DATE, Text, func, Boolean, Float, Table
from sqlalchemy.orm import relationship, backref
...

cardgame.py

from flask import Blueprint
from flask import Flask, request

...

from fashion import models

...

from fashion import error_code
from fashion import address_format

...

from fashion.views.json_update import json_update

bp = Blueprint('cardgame', __name__, url_prefix='/')

@bp.route('/maincard', methods=['GET','POST'])
@jwt_required()
def maincard():
    if request.method =='GET':
        ...
    else: 
        if not request.is_json:
            return error_code.missing_json_error
        else:
            body=request.get_json()
            user_id = get_jwt_identity()
     
            ...

            json_update.delay(user_id)

            ...

            return {
                    'result': result
                    }, 200

json_update.py

from flask import Blueprint
from flask import Flask, request
...
from fashion import models
...
from fashion import error_code
from fashion import address_format
... 

from fashion.__init__ import celery


@celery.task(bind=True)
def json_update(self, user_id):
    ...
    return{
        'result':'succeed'
    }

这些是图书馆的版本:

celery==5.1.0
Flask==2.0.0
Flask-Bcrypt==0.7.1
Flask-Cors==3.0.10
Flask-JWT-Extended==4.2.1
Flask-Migrate==2.7.0
Flask-RESTful==0.3.8
Flask-SQLAlchemy==2.5.1
redis==3.5.3
SQLAlchemy==1.4.15
vine==5.0.0
virtualenv==20.4.6

我们也在使用Docker,Linux环境


Tags: frompyimportjsonappflaskinitupdate

热门问题