这是我得到的错误代码:
[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环境
目前没有回答
相关问题 更多 >
编程相关推荐