Python 芹菜和烧瓶\u socketio消息在从芹菜内部发出的套接字任务中丢失

Python 芹菜和烧瓶\u socketio消息在从芹菜内部发出的套接字任务中丢失,python,flask,celery,flask-socketio,Python,Flask,Celery,Flask Socketio,我遇到的问题是,我想向前端发送一条消息,但由于芹菜任务和主线程的工作,消息丢失了。print语句仅用于检查任务是否正在运行。调用芹菜任务来自uploadDatafile def make_celery(app): celery = Celery( app.name, backend=app.config['CELERY_RESULT_BACKEND'], broker=app.config['CELERY_BROKER_URL']

我遇到的问题是,我想向前端发送一条消息,但由于芹菜任务和主线程的工作,消息丢失了。print语句仅用于检查任务是否正在运行。调用芹菜任务来自uploadDatafile

def make_celery(app):
    celery = Celery(
        app.name,
        backend=app.config['CELERY_RESULT_BACKEND'],
        broker=app.config['CELERY_BROKER_URL']
    )
    celery.conf.update(app.config)

    class ContextTask(celery.Task):
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)

    celery.Task = ContextTask
    return celery


app.config.update(
    CELERY_BROKER_URL = 'amqp://',  
    CELERY_RESULT_BACKEND='amqp://'
)

socketio = SocketIO(app,cors_allowed_origins="*", message_queue='amqp://')
CORS(app)

@celery.task(name='app.add_together')
def add_together():
    socketio = SocketIO(message_queue='amqp://')    
    print(50*'*')
    time.sleep(5)       
    socketio.emit('traindata', {'data':'12', 'time': '14'},namespace='/test') 
    print(50*'*')

@app.route("/uploadDataFile", methods=["GET", "POST"])
def upload_file():
    print(celery.tasks.keys())
    if request.method == "POST":
        # check if the post request has the file part
        if "file" not in request.files:
            response = make_response("No File Attached", 404)
            return response
        file = request.files["file"]
        # if user does not select file, browser also
        # submit an empty part without filename
        if file.filename == "":
            response = make_response("No File Selected", 404)
            return response
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
            add_together.apply_async()
            response = make_response("Uploaded File".format(filename))
            return response
        else:
            response = make_response(
                "Allowed file types ({}) only".format(".ndjson or .json"), 404
            )
            return response
    return ""
if __name__ == "__main__":    
    sess = Session()
    sess.init_app(app)             
    socketio.run(app,port=5000,debug=True)

代码在我看来没问题。您需要在客户端和服务器中启用Socket.IO日志,并跟踪此事件,以查看它被删除的位置以及原因。